我正在尝试从 JUnit4 迁移到 JUnit5,而且我是 Junit5 中的 ParametrizedTest 的新手,我有一个场景,我想提供不同的 DisplayName 和 Test 参数(对象)。
这是我想用作 @MethodSource("data") 输入的数据源
public static Collection<Object[]> data() throws IOException {
List<Object[]> testCaseData = new ArrayList<>();
TestCaseReader testCaseReader = new TestCaseReader(TESTCASE_CSV_RESOURCE);
List<MyClass> testCaseList = testCaseReader.readTestCases();
for (MyClass testCase : testCaseList) {
if (testCase.isActive()) {
Object[] testParameter = new Object[2];
testParameter[0] = String.format("%03d: %s", testCase.getStartingLineNumber(), testCase.getName());
testParameter[1] = testCase;
testCaseData.add(testParameter);
}
}
return testCaseData;
}
这就是测试
@ParameterizedTest(name = "Scenario: {0}, testCase={1}")
@MethodSource("data")
public void process(MyClass testCase) {
//...
//some operating on testCase methods/variables
}
执行 TestCase 时,我看到 DisplayName 被正确拾取,但它说其他参数不可解析
org.junit.jupiter.api.extension.ParameterResolutionException: Failed to resolve parameter [com.sample.MyClass testCase] in method [public void.MultipleTestCase.process(com.sample.MyClass testCase)]
您能否指导我在这里做错了什么!
谢谢