java - 在 IntelliJ 中但不在命令行上运行 JUnit 5 测试时出错
问题描述
当我尝试在 IntelliJ 中运行一个简单的 JUnit 5 测试时,会报告以下错误:
Feb 08, 2019 3:37:39 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;
at org.junit.vintage.engine.discovery.JUnit4DiscoveryRequestResolver.filterAndConvertToTestClassRequests(JUnit4DiscoveryRequestResolver.java:79)
at org.junit.vintage.engine.discovery.JUnit4DiscoveryRequestResolver.resolve(JUnit4DiscoveryRequestResolver.java:48)
at org.junit.vintage.engine.VintageTestEngine.discover(VintageTestEngine.java:64)
at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:177)
at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:164)
at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:120)
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:49)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Exception in thread "main" java.lang.NoSuchMethodError: org.junit.platform.launcher.Launcher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;)V
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:61)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Process finished with exit code 1
这是我的pom:
<properties>
<java.version>1.8</java.version>
<junit.jupiter.version>5.3.2</junit.jupiter.version>
</properties>
</dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<!-- Only needed to run tests in a version of IntelliJ IDEA that bundles older versions -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.4.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- JUnit 5 requires Surefire version 2.22.1 or higher -->
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
</plugins>
</build>
我正在使用 Intellij v2017.1.2。
当我从命令行运行测试时,没有报告任何错误。
我已经看到各种帖子报告了不同版本的 IntelliJ 的类似问题,但建议的解决方案没有帮助。
解决方案
JUnit 用户指南建议使用 2017.3 或更高版本。
IntelliJ IDEA 在 IDEA 2017.3 之前发布捆绑特定版本的 JUnit 5。因此,如果您想使用较新版本的 JUnit Jupiter,在 IDE 中执行测试可能会由于版本冲突而失败。
推荐阅读
- c# - 通过 Rx 正确使用多个资源
- r - 如何更改 boxplot() 中某个类别的异常值的颜色?
- javascript - 多文件上传中的 OnSubmit 和 OnChange
- python - 如何在 django 中使斜杠可选
- excel - 我需要检查文件(test.xls)是否打开
- generics - 在 Kotlin 文档泛型示例中没有返回的 compareTo
- qt - 链接器正在寻找带有 lib 前缀的库,尽管在 QtCreator / qmake 中没有使用 -l 标志
- java - Selenium HtmlUnitDriver 中的未知主机
- javascript - 如何在 Api 调用上使用引导程序创建 3 X 3(Col X Row)的画廊
- java - 如何计算在字符串中找到多少个 2 个字符的匹配项?