版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Magic_Chen2012/article/details/86662745
引言
什么叫做软断言?软断言与断言有什么区别?软断言适用于什么场景?怎样使用软断言?
正文
1、测试类编写;
public class TestSoftAssert {
@Test
public void testSoftAssert(){
System.out.println("这是一个软断言示例-------->>>>");
ClassToBeTested test = new ClassToBeTested();
int result = test.add(3, 6);
Assert.assertEquals(result, 8);
System.out.println("这是一个验证输出语句");
Assert.assertEquals(result, 9);
}
}
测试类测试方法中有两个断言,从代码中可以得知,第一个断言 Assert.assertEquals(result, 8);断言失败。接下来的语句和断言没有执行。
2、执行测试类。
执行上述测试类,执行的结果如下
像上面的场景,一个测试方法中可能存在多个断言,在其中的一个断言失败时,希望后面的语句和断言依然可以执行,这时候我们就需要引入软断言的概念。
软断言与断言的区别:
SoftAssert时TestNG里面描述好的一个类,若想用这个类,首先要创建这个类的对象。
修改上述代码,引入软断言,在断言失败时,使处于其后的语句和断言依然可以执行。需要创建软断言的对象
public class TestSoftAssert {
@Test
public void testSoftAssert(){
System.out.println("这是一个软断言示例-------->>>>");
ClassToBeTested test = new ClassToBeTested();
int result = test.add(3, 6);
SoftAssert sa = new SoftAssert();
sa.assertEquals(result, 8);
System.out.println("这是一个验证输出语句");
sa.assertEquals(result, 9);
}
}
修改后的测试脚本再次执行,是可以测试成功通过的。执行的结果:
如何最终确认这一条测试方法是否成功呢,把有问题的断言暴露出来?还需要再加入软断言中的一个方法assertAll()。只要测试方法中有一个断言是失败的,assertAll()将判定这一条测试用例执行失败。
修正后的测试类代码如下:
public class TestSoftAssert {
@Test
public void testSoftAssert(){
System.out.println("这是一个软断言示例-------->>>>");
ClassToBeTested test = new ClassToBeTested();
int result = test.add(3, 6);
SoftAssert sa = new SoftAssert();
sa.assertEquals(result, 8);
System.out.println("这是一个验证输出语句");
sa.assertEquals(result, 9);
sa.assertAll();
}
}
执行的结果如下图:
三人行,必有我师焉。欢迎交流指正。