jck28-lucio-1- junit5参数化用例(一)

JUnit5 参数化

  • 在测试流程相同,测试数据需要根据业务需求切换。
  • JUnit5的参数化支持多种形式数据来源。

参数化环境配置

pom 引入

org.junit.jupiter
junit-jupiter-params
5.8.1
test

JUnit5 简单参数化 @ValueSource

  • 参数化用例的时候使用的注解由 @Test 换成 @ParameterizedTest
  • 单参数化注解 @ValueSource
  • 注意: 如果 @Test@ParameterizedTest 同时使用则会多执行一次

@ValueSource 支持的参数类型

@ValueSource示例

public class ParamDemoTest {
// @ParameterizedTest 注解指明为参数化测试用例
@ParameterizedTest
// @ValueSource 单参数注解,示例中为String类型参数化
@ValueSource(strings = {“张三”, “李四”, “王五”})
void testParam(String name) {
assertEquals(name.length(),2);
}
}

单参数的问题与解决方案

  • 问题: 很多场景并不会只有一个参数需要进行参数化的验证。
  • 解决方案:使用多参数的参数化方式。

JUnit5 多参数的参数化 @CsvSource

  • 多参数参数化注解 @CsvSource

  • @CsvSource 通过指定的分隔符实现参数化。
    public class CsvParamDemoTest {
    // @ParameterizedTest 注解指明为参数化测试用例
    @ParameterizedTest
    // @CsvSource 注解指定数据源为 csv 数据,csv默认分隔符为 ,
    @CsvSource({“张三,3”, “李四,15”, “王五,8”})
    void testParamCsv1(String name, Integer age) {
    assertEquals(name.length(),2);
    assertTrue(age > 2);
    }

    // @ParameterizedTest 注解指明为参数化测试用例
    @ParameterizedTest
    // @CsvSource 注解指定数据源为 csv 数据,delimiterString 指定数据的分割符
    @CsvSource(value = {“张三|3”, “李四|15”, “王五|8”}, delimiterString = “|”)
    void testParamCsv2(String name, Integer age) {
    assertEquals(name.length(), 2);
    assertTrue(age > 2);
    }
    }

JUnit5 CsvFile的参数化 @CsvFileSource

  • 多参数文件参数化注解 @CsvFileSource
  • 在项目的 test/resources 中新增测试数据 csv 文件
  • @CsvFileSource 支持指定的分隔符进行参数化

多参数化注解 @CsvFileSource 示例

  1. 新建数据文件
  • data.csv使用 , 分隔的
  • data2.csv使用 | 分隔的
张三,3
李四,15
王五,8
张三|3
李四|15
王五|8

多参数化注解 @CsvFileSource 示例

  1. 从csv文件中读取数据信息。
  • 读取数据文件使用 , 分隔的
  • 读取数据文件使用 | 分隔的

public class CsvFileParamDemoTest {
// @ParameterizedTest 注解指明为参数化测试用例
@ParameterizedTest
// @CsvFileSource 注解指定数据源为 csv 数据,csv默认分隔符为 ,
@CsvFileSource(resources = “/data.csv”)
void testParamCsvFile(String name, Integer age) {
assertEquals(name.length(), 2);
assertTrue(age > 2);
}

// @ParameterizedTest 注解指明为参数化测试用例
@ParameterizedTest
// @CsvFileSource 注解指定数据源为 csv 数据,delimiterString 指定数据的分割符
@CsvFileSource(resources = "/data1.csv", delimiterString = "|")
void testParamCsvFile2(String name, Integer age) {
    assertEquals(name.length(), 2);
    assertTrue(age > 2);
}

}