2
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; 必须是 InterfaceMethodref 常量 java.lang.IncompatibleClassChangeError: Method org.junit.jupiter.params.provider.Arguments.of([Ljava/lang/Object;)Lorg/junit/jupiter/params/provider/Arguments; 必须是 InterfaceMethodref 常量

我使用 Java 10,并且在 build.gradle 中启用了 JUnit 5。

4

1 回答 1

5

您的 Groovy 版本似乎太旧了。

看起来你被https://issues.apache.org/jira/browse/GROOVY-7879咬住了 如果有人使用 Gradle,这个错误也是已知的,并通过https://github.com/gradle/gradle/报告问题/721

于 2018-09-27T16:38:03.703 回答