我用参数设置了基本测试
@ParameterizedTest
@MethodSource("intsTest")
public void multiplesOf5(Integer input){
int i =0;
}
private static Stream<Arguments> intsTest(){
Stream<Arguments> argumentsStream = Stream.of(
Arguments.of(1));
return argumentsStream;
}
但我似乎无法运行它,我不断收到以下信息:
java.lang.AbstractMethodError: Receiver class org.junit.jupiter.engine.descriptor.TestTemplateExtensionContext does not define or inherit an implementation of the resolved method 'abstract org.junit.jupiter.api.extension.ExecutableInvoker getExecutableInvoker()' of interface org.junit.jupiter.api.extension.ExtensionContext.
at org.junit.jupiter.params.provider.MethodArgumentsProvider.lambda$provideArguments$2(MethodArgumentsProvider.java:60)
)
我的 gradle 有
testImplementation("org.junit.jupiter:junit-jupiter-engine:5.8.2")
所以我在本地尝试了你的代码,错误来自该行
@MethodSource("intsTest")
事实上,通过以下方式测试你的方法一切正常:
@ParameterizedTest
@ValueSource(ints = {1, 2, 3, 4, 5})
public void multiplesOf5(Integer input){
int i = 0;
}
现在我通过修复 pom.xml 中的依赖关系解决了问题,就 JUnit 而言只留下这两个:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.9.2</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.9.2</version>
</dependency>
我不想说不准确,但我假设有太多的 Junit 依赖项可能会导致它们之间出现一些冲突问题。