第3关:Junit断言
任务描述
给定一个断言测试类AssertionsTest.java
,请按要求补全代码,写出相应的断言测试。
相关知识
Junit断言
Junit的断言方法允许检查测试方法的期望结果值和真实返回值。Junit的org.junit.Assert类提供了各种断言方法来写junit测试,这些方法被用来检查方法的真实结果值和期望值。
代码示例
创建一个文件名为 TestAssertions.java 的类,如下:
package com.trustie.junittest;
import org.junit.Test;
import static org.junit.Assert.*;
public class TestAssertions {
@Test
public void testAssertions() {
//test data
String str1 = new String ("abc");
String str2 = new String ("abc");
String str3 = null;
String str4 = "abc";
String str5 = "abc";
int val1 = 5;
int val2 = 6;
String[] expectedArray = {"one", "two", "three"};
String[] resultArray = {"one", "two", "three"};
//Check that two objects are equal
assertEquals(str1, str2);
//Check that a condition is true
assertTrue (val1 < val2);
//Check that a condition is false
assertFalse(val1 > val2);
//Check that an object isn't null
assertNotNull(str1);
//Check that an object is null
assertNull(str3);
//Check if two object references point to the same object
assertSame(str4,str5);
//Check if two object references not point to the same object
assertNotSame(str1,str3);
//Check whether two arrays are equal to each other.
assertArrayEquals(expectedArray, resultArray);
}
}
在以上类中我们可以看到,这些断言方法是可以工作的。
-
assertEquals() 如果比较的两个对象是相等的,此方法将正常返回;否则失败显示在JUnit的窗口测试将中止。
-
assertSame() 和 assertNotSame() 方法测试两个对象引用指向完全相同的对象。
-
assertNull() 和 assertNotNull() 方法测试一个变量是否为空或不为空(null)。
-
assertTrue() 和 assertFalse() 方法测试if条件或变量是true还是false。
-
assertArrayEquals() 将比较两个数组,如果它们相等,则该方法将继续进行不会发出错误。否则失败将显示在JUnit窗口和中止测试。
编程要求
本关的编程任务是给定一个断言测试类AssertionsTest.java
,请按要求补全代码,写出相应的断言测试。
具体要求如下:
1.断言obj1和obj2相等; 2.断言obj3和obj4指向完全相同的对象; 3.断言obj2和obj4指向不同的对象; 4.断言obj1对象不为空; 5.断言obj5对象为空; 6.断言var1小于var2; 7.断言arithmetic1和arithmetic2两个数组相等。
本关涉及的代码文件AssertionsTest.java
的代码如下:
package step3;
import static org.junit.Assert.*;
import org.junit.Test;
public class AssertionsTest {
String obj1 = "junit";
String obj2 = "junit";
String obj3 = "test";
String obj4 = "test";
String obj5 = null;
int var1 = 1;
int var2 = 2;
int[] arithmetic1 = { 1, 2, 3 };
int[] arithmetic2 = { 1, 2, 3 };
@Test
public void test() {
//请在下面的Begin/End内写添加断言测试的代码,不要改动其他地方的代码
/***********************Begin**************************/
/************************End***************************/
}
}
评测说明
本关卡的测试文件是TestRunner.java
,该文件进行了函数封装且学员不可见,用于验证学员的Junit测试代码是否正确。
具体测试过程如下:
1.平台自动编译生成TestRunner.exe
; 2.平台运行TestRunner.exe
; 3.获取TestRunner.exe
输出,并将其输出与预期输出对比:如果一致则测试通过,否则测试失败。
预期输入: 预期输出:true
友情提示
1.请不要直接println
最终输出,否则平台发现此类情况后,将一律扣掉本关经验值,并且追加处罚措施。
2.学员答题时请尽量手敲代码,请勿从实训讲解代码片段中复制代码段粘贴到答题区域作答,复制的内容会保留一些格式和字符,导致编译失败。
开始你的任务吧,祝你成功!
代码如下
package step3;
import static org.junit.Assert.*;
import org.junit.Test;
public class AssertionsTest {
String obj1 = "junit";
String obj2 = "junit";
String obj3 = "test";
String obj4 = "test";
String obj5 = null;
int var1 = 1;
int var2 = 2;
int[] arithmetic1 = { 1, 2, 3 };
int[] arithmetic2 = { 1, 2, 3 };
@Test
public void test() {
//请在下面的Begin/End内写添加断言测试的代码,不要改动其他地方的代码
/***********************Begin**************************/
assertEquals(obj1,obj2);//断言obj1和obj2相等
assertSame(obj3,obj4);//断言obj3和obj4指向完全相同的对象
assertNotSame(obj2,obj4);//断言obj2和obj4指向不同的对象
assertNotNull(obj1);//断言obj1对象不为空
assertTrue(var1<var2);//断言obj5对象为空断言var1小于var2
assertArrayEquals(arithmetic1,arithmetic2);//断言arithmetic1和arithmetic2两个数组相等
/************************End***************************/
}
}