TestNG assertEquals()与assertTrue()的区别是什么
TestNG支持用于验证的Assertion类。assertTrue()和assertEquals()是该类支持的函数。
assertEquals()
该函数用于断言两个数据值是否相等。可以使用的数据类型包括字符串、整数、布尔值等。用户应确保两个值是相同的数据类型,否则会引发异常。
语法是:
assertEquals(actual, expected)
它接受两个参数:actual和expected,断言值。
当给定的两个数据是相同的时候,断言通过而没有异常。但是,如果两个数据不相同,它会抛出错误。
assertTrue()
该函数用于断言给定的布尔条件是否为true。它接受一个返回布尔值的表达式。如果布尔条件为true,则通过;否则会抛出错误。
语法是:
assertTrue(Boolean_condition)
它只接受返回true或false的表达式。
区别
在实际场景中,用户可以使用这些断言之一来进行验证。
例如:如果用户想要验证2个字符串变量的值,可以使用其中之一。
Assert.assertEquals(a, b)
或者
Assert.assertTrue(a.equals(b))
- 如果a和b相同,我们在这两个断言中不会找到任何差异,但是当有失败或这两个变量不相同时,我们可以注意到错误信息中的差异。
assertEquals() 提供了清晰的异常信息,如下所示:
java.lang.AssertionError: expected [2] but found [1]
期望:2
实际:1
assertTrue() 提供了异常信息,但不清晰,如下所示:
java.lang.AssertionError: expected [true] but found [false]
期望:true
实际:false
- assertEquals是 空安全 的,而assertTrue不是 空安全 的,即在比较两个值时,我们可以将null值传递给assertEquals,但不能将null值传递给assertTrue。
示例
以下是一个常见的TestNG类的代码 – OrderofTestExecutionInTestNG
src/ OrderofTestExecutionInTestNG.java
import org.testng.Assert;
import org.testng.annotations.*;
public class OrderofTestExecutionInTestNG {
// test case 1
@Test()
public void testCase1() {
System.out.println("in test case 1 for assertEqulas as passed");
Assert.assertEquals(1,1);
}
// test case 2
@Test
public void testCase2() {
System.out.println("in test case 2 for assertTrue as passed");
Assert.assertTrue("1".equals("1"));
}
@Test()
public void testCase3() {
System.out.println("in test case 3 for assertEqulas as failed");
Assert.assertEquals(1,2);
}
// test case 4
@Test
public void testCase4() {
System.out.println("in test case 4 for assertTrue as failed");
Assert.assertTrue("1".equals("2"));
}
}
testng.xml
这是一个配置文件,用于组织和运行TestNG测试用例。
当只需要执行有限的测试而不是完整的测试套件时,它非常方便。
<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "Suite1" >
<test name = "test1">
<classes>
<class name = "OrderofTestExecutionInTestNG"/>
</classes>
</test>
</suite>
输出
in test case 1 for assertEqulas as passed
in test case 2 for assertTrue as passed
in test case 3 for assertEqulas as failed
java.lang.AssertionError: expected [2] but found [1]
Expected :2
Actual :1
in test case 4 for assertTrue as failed
java.lang.AssertionError: expected [true] but found [false]
Expected :true
Actual :false
===============================================
Suite1
Total tests run: 4, Passes: 2, Failures: 2, Skips: 0
===============================================