搜索 K
Appearance
博客正在加载中...
Appearance
参数化测试是 JUnit5 很重要的一个新特性,它使得用不同的参数多次运行测试成为了可能,也为我们的单元测试带来许多便利。
官网文档:JUnit 5 User Guide #writing-tests-parameterized-tests
例如利用@ValueSource 等注解,指定入参,我们将可以使用不同的参数进行多次单元测试,而不需要每新增一个参数就新增一个单元测试,省去了很多冗余代码。常用注解:
当然如果参数化测试仅仅只能做到指定普通的入参还达不到让我觉得惊艳的地步。让我真正感到他的强大之处的地方在于他可以支持外部的各类入参。如: CSV, YML, JSON 文件甚至方法的返回值也可以作为入参。只需要去实现 ArgumentsProvider 接口,任何外部文件都可以作为它的入参。
写个案例:
package com.peterjxl.learnspringbootwebadmin;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
public class Junit5Para {
@ParameterizedTest //表明这是一个参数化测试
@DisplayName("参数化测试")
@ValueSource(ints = {1, 2, 3, 4, 5}) //指定参数
void testParameterized(int i) {
System.out.println(i);
}
}运行情况:
static String[] stringProvider() {
return new String[] { "apple", "banana", "sh*t"};
}
@ParameterizedTest //表明这是一个参数化测试
@DisplayName("参数化测试2")
@MethodSource("stringProvider") //指定参数
void testParameterized2(String i) {
System.out.println(i);
} 运行结果:

至此,Junit5 的教程就到这里了。如果要迁移,需要注意如下的变化(参考 官网文档):