jck28-lucio-junit5多断言处理

什么是多断言

  • 一个测试方法里包含多个断言方法
  • 集中断言

为什么要使用集中断言?

  • 场景:
    • 有一个方法存在多个断言,但是其中一个断言失败了,后面的步骤和断言都没有执行,怎么办?
  • 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());
}