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 示例
- 新建数据文件
- data.csv使用
,
分隔的 - data2.csv使用
|
分隔的
张三,3
李四,15
王五,8
张三|3
李四|15
王五|8
多参数化注解 @CsvFileSource 示例
- 从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);
}
}