Junit Assert 和 AssertEquals 示例
什么是 Junit Assert?
Assert 是一种用于确定测试用例的通过或失败状态的方法,assert 方法由扩展 java.lang.Object 类的 org.junit.Assert 类提供。
断言有多种类型,如布尔值、空值、相同等。
Junit 提供了一个名为 Assert 的类,它提供了一系列断言方法,可用于编写测试用例和检测测试失败
断言方法由类提供 断言 延伸 对象 类。
JUnit 断言方法
布尔
如果你想测试布尔条件(真或假),你可以使用以下断言方法
- assertTrue(条件)
- assertFalse(条件)
这里的条件是一个布尔值。
空对象
如果要检查对象/变量的初始值,可以使用以下方法:
- assertNull(对象)
- 断言NotNull(对象)
这里的对象是 Java 对象 例如 断言Null(实际);
相同
如果您想检查对象是否相同(即比较对同一个 java 对象的两个引用)或不同。
- 断言相同(预期,实际), 如果发生以下情况则返回 true 预期 == 实际
- assertNotSame(预期,实际)
断言相等
如果要测试两个对象是否相等,可以使用以下方法
- assertEquals(预期,实际)
如果出现以下情况它将返回 true: 预期.等于(实际) 返回true。
断言数组相等
如果要测试数组是否相等,可以使用以下方法:
- assertArrayEquals(预期,实际)
如果数组的长度相同,则必须使用上述方法,对于每个有效值 i,您可以按如下所示进行检查:
- 断言等于(预期[i],实际[i])
- assertArrayEquals(预期[i],实际[i])
失败信息
如果你想抛出任何断言错误,你可以 失败() 总是会导致失败的判决。
- 失败(消息);
你可以使用附加的断言方法 串 参数作为第一个参数。如果断言失败,此字符串将附加在失败消息中。例如 失败(消息) 可以写成
- assertEquals(消息,预期,实际)
JUnit 断言等于
你有 断言等于(a,b) 这取决于 等于 () Object 类的方法。
- 这里将其评估为 a.等于( b )。
- 这里使用被测试的类来确定合适的相等关系。
- 如果一个类没有覆盖 等于 () 的方法 摆件 类,它将获得默认行为 等于 () 方法,即对象身份。
If a 和 b 是诸如 字节, INT, 布尔等等,然后将对 assertEquals(a,b) 执行以下操作:
a 和 b 将转换为其等效的包装器对象类型(字节,整数, 布尔等),然后 a.等于( b ) 将被评估。
例如:考虑下面提到的具有相同值的字符串,让我们使用 assertTrue 进行测试
String obj1="Junit"; String obj2="Junit"; assertEquals(obj1,obj2);
由于 obj1.equals(obj2) 返回 true,因此上述 assert 语句将返回 true。
浮点断言
当你想比较浮点类型时(例如 翻番 or 浮动),您需要一个额外的必需参数 三角洲 以避免在进行浮点比较时出现舍入误差的问题。
该断言的评估结果如下:
- Math.abs(预期值 – 实际值) <= delta
例如:
断言等于(Double价值,另一个Double值,0.001 )
JUnit 断言示例
下面的示例演示了如何使用 JUnit 断言方法。
让我们创建一个名为 Junit4AssertionTest.java 以及一个测试运行器类 测试运行器.java.
您将在中创建一些变量和重要的断言语句 JUnit.
在此示例中,您将使用 TestRunner.java 执行我们的测试类
步骤1) 让我们创建一个涵盖 junit 中所有重要断言语句方法的类:
Junit4AssertionTest.java
package guru99.junit; import static org.junit.Assert.*; import org.junit.Test; public class Junit4AssertionTest { @Test public void testAssert(){ //Variable declaration String string1="Junit"; String string2="Junit"; String string3="test"; String string4="test"; String string5=null; int variable1=1; int variable2=2; int[] airethematicArrary1 = { 1, 2, 3 }; int[] airethematicArrary2 = { 1, 2, 3 }; //Assert statements assertEquals(string1,string2); assertSame(string3, string4); assertNotSame(string1, string3); assertNotNull(string1); assertNull(string5); assertTrue(variable1<variable2); assertArrayEquals(airethematicArrary1, airethematicArrary2); } }
步骤2) 您需要创建一个测试运行器类来执行上述类:
测试运行器.java
package guru99.junit; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class TestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(Junit4AssertionTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
步骤3) 让我们逐步分析预期输出:
逐一考虑所有断言语句:
- 断言等于(字符串1,字符串2);
现在使用对象类的 equals 方法比较 string1=” Junit” 和 string2=” Junit”。 从 java.lang.Object.equals() 方法替换 assertEquals 方法:
string1.equals(string2)=> 返回 true
因此 assertEquals(string1,string2) 将返回 true.
- 断言相同(字符串3,字符串4);
“assertSame()” 功能是检查两个对象是否引用同一个对象。
由于 string3=”test” 和 string4=”test” 表示 string3 和 string4 属于同一类型,因此 assertSame(string3, string4) 将返回 true.
- 断言不相同(字符串1,字符串3);
“assertNotSame()”功能用于检查两个对象不引用同一个对象。
由于 string1=”Junit” 和 string3=”test” 表示 string1 和 string3 是不同类型,因此 assertNotSame(string1, string3) 将返回 true.
- 断言NotNull(string1);
“assertNotNull()” 功能用于检查对象是否为空。
由于 string1=“Junit” 是一个非空值,因此 assertNotNull(string1) 将返回 true.
- 断言Null(string5);
“assertNull()” 功能是检查对象是否为空。
由于 string5 = null 是一个空值,因此 assertNull(string5) 将返回 true.
- 断言 True(变量 1
“assertTrue()” 功能用于检查条件是否为真。
由于变量1=1,变量2=2,这表明变量1 true.
- 声明ArrayEquals(airethematicArrary1,airethematicArrary2);
“assertArrayEquals()” 功能用于检查预期数组和结果数组是否相等。数组的类型可能是 int、long、short、char、byte 或 java.lang.Object。
由于 airethematicArrary1 = { 1, 2, 3 } 和 airethematicArrary2 = { 1, 2, 3 } 表明两个数组相等,因此 assertArrayEquals(airethematicArrary1, airethematicArrary2) 将返回 true
由于所有七个断言语句 Junit4AssertionTest.java 类返回 true,因此当你执行测试断言类时,它将返回一个成功的测试。(见下面的输出)
步骤4) 右键单击 Junit4AssertionTest.java,然后单击 runAs->JUnit. 您将看到如下所示的输出:
上面的输出表明测试结果如预期成功。
总结
在本教程中,您学习了由以下工具提供的所有重要类型的断言方法: JUnit。此外,您还看到了断言语句的示例。这表明,如果所有断言语句都返回 true,则测试 GUI 将返回 true 结果,如果单个测试失败,则它将返回失败结果。