当前位置: 首页 > 知识库问答 >
问题:

Eclipse未发现使用JUnit 5的测试,原因是LauncherFactory的NoClassDefoundError

颜举
2023-03-14

每当我运行我的项目JUnit测试(使用JUnit5和Java9以及Eclipse Oxygen1.a),我都会遇到Eclipse找不到任何测试的问题。

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

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

我已经试过了

    null

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

共有1个答案

何雅惠
2023-03-14

您遇到了Eclipse bug 525948,该bug已经修复,并将在即将发布的Oxygen.3(4.7.3)中发布,2018年3月21日。

作为解决办法,将测试代码放在一个单独的项目中,并将测试中的项目添加到modulepath中,但不要将module-info.java添加到测试项目中。对于您的项目、类和模块命名,它应该看起来像这样:

另请参阅我的视频,该视频显示了Eclipse Oxygen.1A中的Java9和JUnit5的作用

 类似资料:
  • 我正在升级我们现有的解决方案。NET 4.6.1,并且在服务器构建期间无法运行我们的单元测试。在本地,它们按预期运行,并将框架版本翻转回。Net 4.5.1使它们在服务器上再次运行。 我得到以下错误: 未发现测试。确保安装的测试发现者 我在一个更简单的设置中重现了该问题: 使用一个C#单元测试项目和两个测试(一个失败,一个通过)的解决方案

  • 我试图在spring boot 2.3项目中使用JUnit5与Hibernate5.4和MockMvc。 这就是我的实体类的成员的外观: 我试图使用JUnit5用Mockito和MockMvc测试LocalDate字段birthDate。这就是测试用例的样子: 运行测试用例时,我得到一个AssertionError: 正如您所看到的,这两个字符串表示形式是相同的。但是JUnit5会抛出错误。 那么

  • 在哪些情况下,应该使用? 是否只是为了合法性问题? 如果是,那么问题是什么? 因为我仍然使用开发我的所有项目

  • 我在使用JUnit5进行maven测试时遇到了一个奇怪的问题。 我用junit工具为每个方法创建了测试套件,每个测试都是这样开始的。 和要测试的类

  • 问一个vue3 setup语法糖中使用onBeforeEnter的问题 这段代码是网上搜索的。但是在项目中没有进入beforeRouteEnter,不知道是什么问题。项目中这个路由是有keep-alive缓存的。或者大家有没有更好的方法,在vue3中监听到其他路由跳转到本组件 解决问题

  • 我使用的是Eclipse Oxygen.3版本(4.7.3)。下面是我的JUnit测试类: 当我运行这个Junit测试时,eclipse不断弹出对话框,告诉我“没有tests found with test runner'JUnit5'”。为什么?