Junit断言是什么?
Assert是用于确定测试用例的通过或失败状态的方法,Assert方法由扩展java.lang.Object类的org.juit.Assert类提供。
有各种类型的断言,如布尔型、空型、等价型等。
Junit提供了一个名为Assert的类,它提供了一系列用于编写测试用例和检测测试失败的断言方法
断言方法由org.juit.Assert类提供,该类扩展了java.lang.Object类。
在本教程中,将了解-
- JUnit断言方法
- 布尔值
- 空对象
- 完全相同
- 断言等于
- 断言数组等于
- 失败消息
- JUnit assertEquals
- 浮点断言
- JUnit断言示例
JUnit断言方法
布尔值
如果要测试布尔条件(TRUE或FALSE),可以使用以下Assert方法
- assertTrue(condition)
- assertFalse(condition)
这里的条件是一个布尔值。
空对象
如果要检查对象/变量的初始值,可以使用以下方法:
- assertNull(object)
- assertNotNull(object)
这里的对象是Java对象,例如 assertNull(actual) ;
完全相同
如果想检查对象是否相同(即比较对同一Java对象的两个引用),还是不同。
- assertSame(expected, actual) ,则如果预期==Actual,则返回TRUE
- assertNotSame(expected, actual)
断言相等
如果要测试两个对象的相等性,可以使用以下方法
- assertEquals(expected, actual)
如果: expected.equals( actual ) 返回TRUE,则返回TRUE。
断言数组相等
如果要测试数组的相等性,可以使用以下方法:
- assertArrayEquals(expected, actual)
如果数组的长度相同,则必须使用上述方法,对于i的每个有效值,可以按如下所示进行检查:
- assertEquals(expected[i],actual[i])
- assertArrayEquals(expected[i],actual[i])
失败消息
如果想抛出任何断言错误,可以使用 fail() ,它总是导致判断失败。
- fail(message) ;
可以使用带有附加字符串参数的断言方法作为第一个参数。 fail( message ) 可以写成
- assertEquals( message, expected, actual)
JUnit assertEquals
有 assertEquals(a,b) ,它依赖于Object类的equals()方法。
- 在这里,它的计算结果将为 a.equals( b ) 。
- 这里,测试中的类用于确定合适的相等关系。
- 如果一个类没有重写Object类的 equals() 方法,它将获得 equals() 方法的默认行为,即对象标识。
如果a和b是诸如byte、int、boolean等原语,然后,将对 assertEquals(a,b) 执行以下操作:
a和b将被转换为其等效的包装器对象类型(字节、整数、布尔等),然后将计算 a.equals( b ) 。
例如:考虑下面提到的具有相同值的字符串,让我们使用assertTrue对其进行测试
String obj1="Junit";
String obj2="Junit";
assertEquals(obj1,obj2);
当 obj1.equals(obj2) 返回TRUE时,上述ASSERT语句将返回TRUE。
浮点断言
当想要比较浮点类型(例如,DOUBLE或FLOAT)时,需要一个额外的必需参数Delta,以避免在执行浮点比较时出现舍入错误问题。
该断言的计算结果如下所示:
- Math.abs( expected – actual ) <=增量
例如:
assertEquals( aDoubleValue, anotherDoubleValue, 0.001 )
JUnit断言示例
下面的示例演示了如何使用JUnit Assert方法断言条件。
让我们创建一个名为Junit4AssertionTest.java的简单测试类和一个测试运行器类TestRunner.java。
将在JUnit中创建几个变量和重要的Assert语句。
在本例中,将使用TestRunner.java执行我们的测试类
步骤1) 让我们创建一个覆盖junit中所有重要Assert语句方法的类:
Junit4AssertionTest.java
package guru.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)需要创建一个test runner类来执行上面的类:
TestRunner.java
package guru.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)让我们逐步分析预期产量:
逐条考虑所有ASSERT语句:
- assertEquals(string1,string2) ;
现在将string 1=“Junit”与string 2=“Junit”与Object类的equals方法进行比较。将AssertEquals方法从 java.lang.Object.equals() 方法替换为:
string1.equals(string2) =>返回TRUE
所以 assertEquals(string1,string2) 将返回TRUE。
- assertSame(string3, string4) ;
“ assertSame() ”功能是检查这两个对象是否引用同一对象。
由于字符串3=“测试”和字符串4=“测试”意味着字符串3和字符串4属于同一类型,因此 assertSame(string3, string4) 将返回TRUE。
- assertNotSame(string1, string3) ;
“ assertNotSame() ”功能是检查这两个对象是否引用了同一个对象。
由于String1=“Junit”和String3=“TEST”表示String1和String3的类型不同,因此 assertNotSame(string1, string3) 将返回TRUE。
- assertNotNull(string1) ;
“assertNotNull()”功能是检查对象是否不为空。
由于String1=“Junit”是一个非空值,因此 assertNotNull(string1) 将返回TRUE。
- assertNull(string5) ;
“ assertNull() ”功能是检查对象是否为空。
由于String5=NULL(空值),因此 assertNull(string5) 将返回TRUE。
- assertTrue(variable1<variable2) ;
“assertTrue()”功能是检查条件是否为真。
由于Variable1=1和Variable2=2,这表明Variable1<Variable2条件为真,因此 assertTrue(variable1<variable2) 将返回TRUE。
- assertArrayEquals(airethematicArrary1, airethematicArrary2) ;
“assertArrayEquals()”功能是检查预期数组和结果数组是否相等。Array的类型可以是int、long、Short、char、byte或java.lang.Object。
由于数组1={1,2,3}和数组2={1,2,3}表明这两个数组相等,因此 assertArrayEquals(airethematicArrary1, airethematicArrary2) 将返回TRUE
由于Junit4AssertionTest.java类的所有七个Assert语句都返回TRUE,因此当执行测试Assert类时,它将返回一个成功的测试。(参见下面的输出)
步骤4)右键单击Junit4AssertionTest.java并单击RunAs->JUnit。将看到如下所示的输出:

上面的输出显示了预期的成功测试结果。
总结:
在本教程中,学习了JUnit提供的所有重要类型的断言方法。这表明如果所有Assert语句都返回TRUE,那么测试GUI将返回TRUE结果,如果单个测试失败,它将返回失败结果。