Junit Assert 和 AssertEquals 示例

什么是 Junit Assert?

Assert 是一种用于确定测试用例的通过或失败状态的方法,assert 方法由扩展 java.lang.Object 类的 org.junit.Assert 类提供。

断言有多种类型,如布尔值、空值、相同等。

Junit 提供了一个名为 Assert 的类,它提供了一系列断言方法,可用于编写测试用例和检测测试失败

断言方法由类提供 断言 延伸 对象 类。

JUnit 断言方法

布尔

如果你想测试布尔条件(真或假),你可以使用以下断言方法

  1. assertTrue(条件)
  2. assertFalse(条件)

这里的条件是一个布尔值。

空对象

如果要检查对象/变量的初始值,可以使用以下方法:

  1. assertNull(对象)
  2. 断言NotNull(对象)

这里的对象是 Java 对象 例如 断言Null(实际);

相同

如果您想检查对象是否相同(即比较对同一个 java 对象的两个引用)或不同。

  1. 断言相同(预期,实际), 如果发生以下情况则返回 true 预期 == 实际
  2. assertNotSame(预期,实际)

断言相等

如果要测试两个对象是否相等,可以使用以下方法

  • assertEquals(预期,实际)

如果出现以下情况它将返回 true: 预期.等于(实际) 返回true。

断言数组相等

如果要测试数组是否相等,可以使用以下方法:

  • assertArrayEquals(预期,实际)

如果数组的长度相同,则必须使用上述方法,对于每个有效值 i,您可以按如下所示进行检查:

  • 断言等于(预期[i],实际[i])
  • assertArrayEquals(预期[i],实际[i])

失败信息

如果你想抛出任何断言错误,你可以 失败() 总是会导致失败的判决。

  • 失败(消息);

你可以使用附加的断言方法 参数作为第一个参数。如果断言失败,此字符串将附加在失败消息中。例如 失败(消息) 可以写成

  • assertEquals(消息,预期,实际)

JUnit 断言等于

你有 断言等于(a,b) 这取决于 等于 () Object 类的方法。

  • 这里将其评估为 a.等于( b )。
  • 这里使用被测试的类来确定合适的相等关系。
  • 如果一个类没有覆盖 等于 () 的方法 摆件 类,它将获得默认行为 等于 () 方法,即对象身份。

If ab 是诸如 字节, INT, 布尔等等,然后将对 assertEquals(a,b) 执行以下操作:

ab 将转换为其等效的包装器对象类型(字节,整数, 布尔等),然后 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. 断言等于(字符串1,字符串2);

现在使用对象类的 equals 方法比较 string1=” Junit” 和 string2=” Junit”。 从 java.lang.Object.equals() 方法替换 assertEquals 方法:

string1.equals(string2)=> 返回 true

因此 assertEquals(string1,string2) 将返回 true.

  1. 断言相同(字符串3,字符串4);

“assertSame()” 功能是检查两个对象是否引用同一个对象。

由于 string3=”test” 和 string4=”test” 表示 string3 和 string4 属于同一类型,因此 assertSame(string3, string4) 将返回 true.

  1. 断言不相同(字符串1,字符串3);

“assertNotSame()”功能用于检查两个对象不引用同一个对象。

由于 string1=”Junit” 和 string3=”test” 表示 string1 和 string3 是不同类型,因此 assertNotSame(string1, string3) 将返回 true.

  1. 断言NotNull(string1);

“assertNotNull()” 功能用于检查对象是否为空。

由于 string1=“Junit” 是一个非空值,因此 assertNotNull(string1) 将返回 true.

  1. 断言Null(string5);

“assertNull()” 功能是检查对象是否为空。

由于 string5 = null 是一个空值,因此 assertNull(string5) 将返回 true.

  1. 断言 True(变量 1

“assertTrue()” 功能用于检查条件是否为真。

由于变量1=1,变量2=2,这表明变量1 true.

  1. 声明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 断言示例

上面的输出表明测试结果如预期成功。

总结

在本教程中,您学习了由以下工具提供的所有重要类型的断言方法: JUnit。此外,您还看到了断言语句的示例。这表明,如果所有断言语句都返回 true,则测试 GUI 将返回 true 结果,如果单个测试失败,则它将返回失败结果。