TestNG断言
TestNG中的Assertion,也是断言。
断言是测试中最难写的部分。
- Assert类(硬断言)
断言类是Assert.java,里面有多个静态方法被称为硬断言,硬断言就是,如果运行到折行断言失败,即使该用例,后面还有其他代码行,也不会继续执行下去
Assert.assertEquals( expected,actual)
image.pngTestNG中提供了多个33个assertEquals()方法,主要是匹配不同的数据类型和集合类操作。
举例:
package com.example.lenovo.myapplication;
import org.testng.annotations.Test;
import static junit.framework.TestCase.assertEquals;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
assertEquals(5,1+9);
}
}
image.png
上面可以看出assertEquals中Expected和Actual不相等,如果现实结果和期待结果不相等,抛出断言异常并显示内容,这样抛出错误,更能快速读懂错误的原因和错误的具体业务逻辑
(1) assertTrue:判断是否为True。
(2) assertFalse:判断是否为false。
(3) assertSame:判断引用地址是否相同。
(4) assertNotSame:判断引用地址是否不相同。
(5) assertNull:判断是否为null。
(6) assertNotNull:判断是否不为null。
(7) assertEquals:判断是否相等,Object类型的对象需要实现haseCode及equals方法。
(8) assertNotEquals:判断是否不相等。
(9) assertEqualsNoOrder:判断忽略顺序是否相等
- SoftAssert(软断言)
SoftAssert的特点
1) 如果一个断言失败,会继续执行这个断言下的其他语句或者断言
2) 也就是一个用例有多个断言,失败了其中一个,不影响其他断言的运行
3) 不要忘记调用assertAll()在该用例的最后一个断言后面
4) 软断言的类,叫SoftAssert.java,这个类是需要创建实例对象,才能调用相关实例方法进行软断言
package testng;
import org.testng.annotations.Test;
import org.testng.asserts.SoftAssert;
public class AssertTestDemo {
@Test
public void testSoftAssert(){
System.out.println("Test start");
SoftAssert assertion = new SoftAssert();
assertion.assertEquals(12, 13,"两者不相等");
System.out.println("Test complete");
System.out.println(3+8);
assertion.assertAll();
}
}
运行结果:
image.png
通过运行结果截图,可以看到在断言12和13相等的这行代码后面还有其他的语句,如果这里采用的是硬断言,那么Test complete 和 11是不会输出,也就是代码没有被执行。这个就是SoftAssert的优点,再强调一次,最后一定要调用assertAll()方法