尝试使用 --- 将我的项目迁移到 java8 + Junit5 IntelliJ 2017.2
我添加了 junit-jupiter-api
版本 5.0.0-M6
和 junit-platform-launcher
版本 1.0.0-M6
项目结构是默认的maven约定 src/test/java
找到了几篇关于此的文章,但没有一篇能解决我的问题。
它在控制台中运行良好,我认为这与 IntelliJ 默认的 JUnit Runner 有关,或者我缺少一些依赖项?
当我运行一个测试类时,一切正常,但是当我选择目录和 Run all 'Tests' in Java
就像我以前做的那样,我遇到了一些错误。
WARNING: TestEngine with ID 'junit-jupiter' failed to discover tests
java.lang.NoSuchMethodError: org.junit.platform.engine.TestDescriptor.pruneTree()V
Aug 02, 2017 2:44:56 PM org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-vintage' failed to discover tests
java.lang.NoSuchMethodError: org.junit.platform.engine.EngineDiscoveryRequest.getDiscoveryFiltersByType(Ljava/lang/Class;)Ljava/util/List;
Aug 02, 2017 2:44:56 PM org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-jupiter' failed to discover tests
java.lang.NoSuchMethodError: org.junit.platform.engine.TestDescriptor.pruneTree()V
Aug 02, 2017 2:44:56 PM org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-vintage' failed to discover tests
java.lang.NoSuchMethodError: org.junit.platform.engine.EngineDiscoveryRequest.getDiscoveryFiltersByType(Ljava/lang/Class;)Ljava/util/List;
注意:我还没有迁移任何测试,都是 Junit 4 语法。
原文由 LazerBanana 发布,翻译遵循 CC BY-SA 4.0 许可协议
添加特定的依赖项可以解决问题。
注意:更新 2017.2.0 以上的 INTELLIJ,因为 JUNIT 启动器存在错误
OXYGEN 如果你使用 eclipse。
下面的依赖项启用 Junit5 参数化测试,可以用来代替 DataProvider 。
Junit5 API 。
如果您想在不更改语法和导入的情况下运行遗留 JUnit4 测试,则需要。
编辑:07/2018 将 vintage runner 的版本与 jupiter 版本相匹配
如果您想使用新语法和导入运行 JUnit5 测试,则需要。
启动器。
附加信息如何安装 JUnit5
自 Gradle 4.6 版本以来,不再需要插件 Gradle 原生支持 Junit5 只需执行以下操作: 并且 vintage runner 的版本现在与 JUnit 5 版本相同。