什么是多断言
- 一个测试方法里包含多个断言方法
- 集中断言
为什么要使用集中断言?
- 场景:
- 有一个方法存在多个断言,但是其中一个断言失败了,后面的步骤和断言都没有执行,怎么办?
- JUnit5的普通断言,当一个断言失败会直接跳出正在执行的测试方法,导致后面的断言无法执行
- 脚本容错性较低
- 这个时候就需要用到集中断言
集中断言使用场景
- 测试方法里面
- 测试方法内容执行完以后使用
集中断言使用方式
- 3种方式
3种方式
- 拆开多个测试方法,每个测试方法进行一个断言。(会造成大量重复代码,此方案被否)
- 使用软断言,即使一个断言失败,仍会进行进行余下的断言,然后统一输出所有断言结果。
- 使用
lambda
表达式执行多个断言-
lambda
表达式执行语法块
-
实施方案:
可以使用JUnit5
提供的Java 8 lambdas
的断言方法,当一个断言失败,剩下的断言依然会执行,脚本的容错性增强。
软断言、集中断言
直接assertAll
直接使用assertAll进行断言
assertAll( "加法计算结果校验",
//代码块
()->{
System.out.println("lambda表达式执行语法块");
assertEquals(6,result);
},
()->assertEquals(7,result01),
()->assertEquals(8,result03)
);
声明ArrayList<Executable>
借助list进行断言
ArrayList<Executable> assertList = new ArrayList<>();
for(int i=0;i<10;i++){
int result = Calculator.add(1,i);
System.out.println("加法计算结果: "+ result);
int finalI = i;
//将中间结果保存到list中,以备后面统一断言
assertList.add(()->assertEquals(finalI,result));
}
assertAll("加法计算结果校验",assertList.stream());
}