【发布时间】:2019-02-02 01:51:09
【问题描述】:
我正在尝试在 JUnit 5 中开发参数化测试,如下例所示。
@ParameterizedTest
@ArgumentsSource(ArgClassProvider.class)
void testAction_shouldSmth(ArgClass argClass) {
//...
}
class ArgClassProvider implements ArgumentsProvider {
@Override
public Stream<? extends Arguments> provideArguments(ExtensionContext extensionContext) throws Exception {
return Stream.of(new ArgClass(), new ArgClass()).map(Arguments::of);
}
}
尝试运行测试导致异常:
java.lang.NoSuchMethodException: com.ots.platform_sl.service.config.service.EarnMilesServiceTestHotels$ArgClassProvider.<init>()
...
org.junit.platform.commons.util.PreconditionViolationException: Configuration error: You must provide at least one argument for this @ParameterizedTest
...
您必须为此@ParameterizedTest 提供至少一个参数
这条信息让我觉得,我做错了什么,不是吗?
p。 s。我有一个假设,只有原始类型的 args 可用。
【问题讨论】:
-
不应该是
@ArgumentsSource(CategoriesProvider.class)吗? -
是的,当然。这是问题文本中的错误。谢谢!
标签: java unit-testing junit5