java – Eclipse没有使用NoClassDefFoundError导致的JUnit 5找到的测试

问题

每当我运行我的项目JUnit测试(使用JUnit 5与Java 9和Eclipse Oxygen 1.a)我遇到eclipse无法找到任何测试的问题.

说明

在运行配置下,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注释的方法上开始测试,然后单击“Run as JUnit Test”.
>从Buildpath中删除JUnit并再次添加
>重启eclipse
>我还将项目整个项目从一台机器移动到另一台机器,并在那里使用提供的eclipse安装进行了尝试
>重命名测试方法.
>重新输入@Test注释

其中一些步骤can be found here,但最终问题仍然存在.

最佳答案
你遇到了已经修复的Eclipse bug 525948,它将在2018年3月21日即将发布的Oxygen.3(4.7.3)中发布.

解决方法是,将测试代码放在单独的项目中,并将测试中的项目添加到模块路径中,但不要将module-info.java添加到测试项目中.使用您的项目,类和模块命名,它应该看起来像这样:

enter image description here

另见my video that shows Java 9 and JUnit 5 in Eclipse Oxygen.1a in action

转载注明原文:java – Eclipse没有使用NoClassDefFoundError导致的JUnit 5找到的测试 - 代码日志