Junit Assert&AssertEquals示例

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方法

  1. assertTrue(condition)
  2. assertFalse(condition)

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

空对象

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

  1. assertNull(object)
  2. assertNotNull(object)

这里的对象是Java对象,例如 assertNull(actual) ;

完全相同

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

  1. assertSame(expected, actual) ,则如果预期==Actual,则返回TRUE
  2. 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语句:

  1. assertEquals(string1,string2) ;

现在将string 1=“Junit”与string 2=“Junit”与Object类的equals方法进行比较。将AssertEquals方法从 java.lang.Object.equals() 方法替换为:

string1.equals(string2) =>返回TRUE

所以 assertEquals(string1,string2) 将返回TRUE。

  1. assertSame(string3, string4) ;

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

由于字符串3=“测试”和字符串4=“测试”意味着字符串3和字符串4属于同一类型,因此 assertSame(string3, string4) 将返回TRUE。

  1. assertNotSame(string1, string3) ;

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

由于String1=“Junit”和String3=“TEST”表示String1和String3的类型不同,因此 assertNotSame(string1, string3) 将返回TRUE。

  1. assertNotNull(string1) ;

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

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

  1. assertNull(string5) ;

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

由于String5=NULL(空值),因此 assertNull(string5) 将返回TRUE。

  1. assertTrue(variable1<variable2) ;

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

由于Variable1=1和Variable2=2,这表明Variable1<Variable2条件为真,因此 assertTrue(variable1<variable2) 将返回TRUE。

  1. 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
Junit Assert

上面的输出显示了预期的成功测试结果。

总结:

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

IT赶路人

专注IT知识分享