为什么为junit jupiter新版本获取noSuchMethodError?

时间:2017-08-11 09:01:33

标签: java junit

当我使用java 1.8.0_152升级新的junit版本时出现此错误:

aug. 11, 2017 9:46:07 DE org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-jupiter' failed to discover tests
java.lang.NoSuchMethodError: org.junit.jupiter.engine.descriptor.ClassTestDescriptor.setSource(Lorg/junit/platform/engine/TestSource;)V

以前我使用的是M4版本......没关系,我可以运行测试。

我添加了这些依赖项:

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.0.0-RC2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-runner</artifactId>
        <version>1.0.0-RC2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <version>4.12.0-RC2</version>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>1.0.0-RC2</version>
    </dependency>

可能有什么问题?

1 个答案:

答案 0 :(得分:0)

自JUnit版本5.0.0-M6以来,

AbstractTestDescriptor.setSource(TestSource)已被删除。请参阅this commit。所以其中一个解决方案是将版本更改为5.0.0-M5。升级版产品版本(junit-platform-runner或junit-vintage-engine或junit-platform-launcher)可以解决这个问题但我不知道,直到我看到NoSuchMethodError的完整堆栈跟踪。