参数化:
- 在测试流程相同,测试数据需要根据业务需求切换。
- JUnit5的参数化支持多种形式数据来源。
参数化环境配置:pom引入
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
简单参数化@ValueSource:
- 参数化用例的时候使用的注解由@Test换成@ParameterizedTest
- @ParameterizedTest声明测试类是一个参数化的测试类
- 单参数化注解@ValueSource
- 注意:如果@Test和@ParameterizedTest同时使用则会多执行一次
@ValueSource支持的参数类型:
单参数注解支持以下类型的单参数数据的参数化:
@ParameterizedTest 用于传递测试数据:
使用单参数注解@ValueSource传递参数化的数据内容:传递参数的过程中,需要通过ValueSource定义的关键字进行类型声明
@ValueSource(strings = {"张三","李四","王五"})
接着再测试方法上面添加形参,接受参数化得到数据:
单参数的问题与和解决方案:
- 问题:很多场景并不会只有一个参数需要进行参数化的验证
- 解决方案:使用多参数的参数化方式
多参数的参数化@CsvSource:
- 多参数参数化注解@CvsSource
- @CvsSource通过指定的分隔符实现参数化
- 注意:使用CsvSource注解传递参数化数据,传递的参数格式是一个集合,如果是多个参数,使用默认分隔符,分开
CsvFile的参数化@CsvFileSource:
- 多参数文件参数化注解 @CsvFileSource
- 在项目的test/resources中新增测试数据csv文件
- @CsvFileSource支持指定的分隔符进行参数化
多参数化注解@CsvFileSource:
1.新建数据文件
- data.csv使用,分隔的
- data2.csv使用 | 分割的
使用CsvFileSource注解声明参数化数据,使用关键字resources指定文件
注意:文件名前面需要加 /
注意给测试方法添加形参
上图中的delimiterString是用来解决符号异常问题,因为正常情况下都是 , 为主,所以用了其他符号就需加上delimiterString来解决。