java.lang.IncompatibleClassChangeError org.junit.jupiter.params.provider.Arguments 必须是 InterfaceMethodref 常量
java.lang.IncompatibleClassChangeError org.junit.jupiter.params.provider.Arguments must be InterfaceMethodref constant
import groovy.transform.CompileStatic
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.Arguments
import org.junit.jupiter.params.provider.MethodSource
import java.util.stream.Stream
import static org.assertj.core.api.Assertions.assertThat
@CompileStatic
class MyUnitTest {
@ParameterizedTest(name = "{index} => myString={0}")
@MethodSource("provideData")
void test(String myString) {
assertThat("hallo").isEqualTo(myString)
}
private static Stream<Arguments> provideData() {
return Stream.of(
Arguments.of("hallo"))
}
}
运行 这个 JUnit 5 测试给我以下错误:
方法
org.junit.jupiter.params.provider.Arguments.of([Ljava/lang/Object;)Lorg/junit/jupiter/params/provider/Arguments;
must be InterfaceMethodref constant
java.lang.IncompatibleClassChangeError: Method
org.junit.jupiter.params.provider.Arguments.of([Ljava/lang/Object;)Lorg/junit/jupiter/params/provider/Arguments;
must be InterfaceMethodref constant
我使用 Java 10,并且在我的 build.gradle 中启用了 JUnit 5。
您的 Groovy 版本似乎太旧了。
看来你被https://issues.apache.org/jira/browse/GROOVY-7879咬了
如果有人使用 Gradle,此错误也在那里已知并通过 https://github.com/gradle/gradle/issues/721
报告
import groovy.transform.CompileStatic
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.Arguments
import org.junit.jupiter.params.provider.MethodSource
import java.util.stream.Stream
import static org.assertj.core.api.Assertions.assertThat
@CompileStatic
class MyUnitTest {
@ParameterizedTest(name = "{index} => myString={0}")
@MethodSource("provideData")
void test(String myString) {
assertThat("hallo").isEqualTo(myString)
}
private static Stream<Arguments> provideData() {
return Stream.of(
Arguments.of("hallo"))
}
}
运行 这个 JUnit 5 测试给我以下错误: 方法
org.junit.jupiter.params.provider.Arguments.of([Ljava/lang/Object;)Lorg/junit/jupiter/params/provider/Arguments; must be InterfaceMethodref constant java.lang.IncompatibleClassChangeError: Method org.junit.jupiter.params.provider.Arguments.of([Ljava/lang/Object;)Lorg/junit/jupiter/params/provider/Arguments; must be InterfaceMethodref constant
我使用 Java 10,并且在我的 build.gradle 中启用了 JUnit 5。
您的 Groovy 版本似乎太旧了。
看来你被https://issues.apache.org/jira/browse/GROOVY-7879咬了 如果有人使用 Gradle,此错误也在那里已知并通过 https://github.com/gradle/gradle/issues/721
报告