【发布时间】:2021-03-04 11:00:41
【问题描述】:
我正在尝试将 ParameterizedTest 从 JUnit4 转换为 JUnit5(遗憾的是我并不是特别擅长测试)。
在 JUnit4 中,我有以下课程:
@RunWith(Parameterized.class)
public class AssertionTestCase {
private final TestInput testInput;
public AssertionTestCase(TestInput testInput) {
this.testInput = testInput;
}
@Parameterized.Parameters
public static Collection<Object[]> data() {
return AssertionTestCaseDataProvider.createDataCase();
}
@Test(timeout = 15 * 60 * 1000L)
public void testDailyAssertion() {
LOG.info("Testing input {}/{}", testInput.getTestCase(), testInput.getTestName());
//assert stuffs
}
}
在AssertionTestCaseDataProvider 类中,我有一个生成Object[] 集合的简单方法:
class AssertionTestCaseDataProvider {
static Collection<Object[]> createDataCase() {
final List<TestInput> testInputs = new ArrayList<>();
//create and populate testInputs
return testInputs.stream()
.map(testInput -> new Object[]{testInput})
.collect(Collectors.toList());
}
}
我一直在尝试使用 JUnit5 翻译它并获得了这个:
class AssertionTestCase {
private final TestInput testInput;
public AssertionTestCase(TestInput testInput) {
this.testInput = testInput;
}
public static Collection<Object[]> data() {
return AssertionTestCaseDataProvider.createDataCase();
}
@ParameterizedTest
@MethodSource("data")
void testDailyAssertion() {
LOG.info("Testing input {}/{}", testInput.getTestCase(), testInput.getTestName());
// assert stuffs
}
}
我没有对AssertionTestCaseDataProvider 类应用任何更改。
不过,我收到以下错误:
No ParameterResolver registered for parameter [com.xxx.xx.xxx.xxx.testinput.TestInput arg0] in constructor [public `com.xxx.xxx.xxx.xxx.xxx.AssertionTestCase(com.xxx.xxx.xxx.xxx.testinput.TestInput)]. org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [com.xxx.xx.xxx.xxx.testinput.TestInput arg0] in constructor [public com.xxx.xxx.xxx.xxx.xxx.AssertionTestCase(com.xxx.xxx.xxx.xxx.testinput.TestInput)].`
我知道在为测试初始化输入集合时,我可能没有正确应用 JUnit5。我错过了一些注释吗?
我也尝试使用@ArgumentSource 代替@MethodSource 并为AssertionTestCaseDataProvider 实现Argument,但结果相同。
【问题讨论】:
标签: junit5 parameterized-tests