Eclipse 未发现使用 JUnit 5 的测试,该测试由 NoClassDefFoundError for LauncherFactory 引起

2022-08-31 08:39:17

问题

每当我运行我的项目JUnit测试(将JUnit 5与Java 9和Eclipse Oxygen 1.a一起使用)时,我都会遇到日食找不到任何测试的问题。

说明

在运行配置下,eclipse甚至找不到用@Test注释的方法,而是只向我显示“(所有方法)”。下图希望能更好地瞥见我的设置:

https://imgur.com/a/FTe9c

控制台输出:

java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.base/java.lang.Class.newInstance(Unknown Source)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:363)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:307)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:222)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    ... 11 more

到目前为止我尝试了什么

我已经试过了

  • 从生成路径中删除测试文件夹,然后重新添加。
  • 将鼠标悬停在标有 @Test 的方法上以开始测试,然后单击“以 JUnit 测试身份运行”。
  • 从构建路径中删除 JUnit 并再次添加
  • 重新启动日食
  • 我还将整个项目从一台机器移动到另一台机器,并在那里通过提供的eclipse安装进行了尝试。
  • 以重命名测试方法。
  • 以重新键入@Test批注

其中一些步骤可以在这里找到,但最终问题仍然存在。


答案 1

我通过右键单击测试并选择“运行配置”并将“测试运行程序:”选择更改为“JUnit 4”来解决此问题,如下所示:

Screenshot of run configruations

我再次运行测试,它的工作原理。


答案 2

我在STS 3.9.1上遇到了同样的问题。这似乎是一个Eclipse错误,但是,要解决此问题,您可以在项目中添加测试依赖项(https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcherjunit-platform-launcher)

这就是我为我的项目所做的,它使用gradle:

dependencies {
    // other stuff here

    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "5.${junit5MinorVersion}"
    testCompile group: 'org.junit.platform', name: 'junit-platform-launcher', version: "1.${junit5MinorVersion}"
}

gradle.properties 文件:

junit5MinorVersion=1.0

我相信如果你在使用IntelliJ IDEA时看到这个异常,这同样适用。


推荐