Java Junit5错误。必须为此@ParameteredTest至少提供一个参数
我试图在JUnit5中开发一个参数化测试,如下例所示Java Junit5错误。必须为此@ParameteredTest至少提供一个参数,java,unit-testing,junit5,Java,Unit Testing,Junit5,我试图在JUnit5中开发一个参数化测试,如下例所示 @ParameterizedTest @ArgumentsSource(ArgClassProvider.class) void testAction_shouldSmth(ArgClass argClass) { //... } class ArgClassProvider implements ArgumentsProvider { @Override public Stream<? extends Ar
@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);
}
}
@ParameterizedTest
@ArgumentsSource(ArgClassProvider.class)
无效测试操作\u应为SMTH(ArgClass ArgClass){
//...
}
类ArgClassProvider实现ArgumentsProvider{
@凌驾
公共图书馆
将ArgClassProvider
设为静态类或顶级类
长版本
仔细查看错误消息:
java.lang.NoSuchMethodException:
com.ots.platform_sl.service.config.service.EarnMilesServiceTestHotels$ArgClassProvider.<init>()
java.lang.NoSuchMethodException:
com.ots.platform_sl.service.config.service.EarnMileServiceTestHotels$ArgClassProvider.()
这里您可以看到,Jupiter无法为ArgClassProvider
找到无参数构造函数。原因是它是,这意味着它的隐式构造函数将外部类的实例(在本例中为EarnMileServiceTestHotels
)作为参数
要提供参数Provider
实现,您有两个选项:
- 让它成为一个合适的类
- 使其
静态
,这样它就不再引用外部类的实例,并且隐式构造函数不接受任何参数
不应该是@ArgumentsSource(CategoriesProvider.class)
?是的,当然。这是问题文本中的一个错误。谢谢!
java.lang.NoSuchMethodException:
com.ots.platform_sl.service.config.service.EarnMilesServiceTestHotels$ArgClassProvider.<init>()