JUnit单元测试报错NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory

简介: 因为 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage JUnit Platform是提供了运行(测试框架)环境的平台 JUnit Jupiter 是新的Junit5(子项目提供了一个基于平台测试运行Jupiter的测试引擎) JUnit Vintage提供了Junit3/4的测试引擎(向前兼容) 所以这里报错的原因应该是:缺少对应依赖()。
+关注继续查看

环境

IDEA 2019.3

OS:macOS 15

image.png

在 test 目录下执行单元测试时报错

image.png

java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
    at java.lang.Class.newInstance(Class.java:438)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:367)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:362)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:306)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:221)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:205)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 11 more

添加 junit-platform-launcher 依赖即可。

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
</dependency>

原因

因为 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

  • JUnit Platform是提供了运行(测试框架)环境的平台
  • Unit Jupiter 是新的Junit5(子项目提供了一个基于平台测试运行Jupiter的测试引擎)
  • JUnit Vintage提供了Junit3/4的测试引擎(向前兼容)
    所以这里报错的原因应该是:缺少对应依赖()。
目录
相关文章
|
25天前
|
测试技术
Junit单元测试
Junit单元测试
17 0
|
2月前
|
Java 测试技术
Java中JUnit单元测试
Java中JUnit单元测试
33 0
|
2月前
|
Java 测试技术 程序员
Junit单元测试
Junit单元测试
|
2月前
|
Java 测试技术
JUnit单元测试依赖包构建路径错误解决办法
JUnit单元测试依赖包构建路径错误解决办法
|
4月前
|
Java 测试技术 Spring
Mockito + Junit + SpringBoot进行单元测试
Mockito + Junit + SpringBoot进行单元测试
100 0
|
5月前
|
druid Java 数据库连接
Spring整合Mybatis&Junit单元测试
Spring整合Mybatis&Junit单元测试
|
6月前
|
Java 测试技术
单元测试_JUnit常用单元测试注解介绍及代码演示 2
单元测试_JUnit常用单元测试注解介绍及代码演示
57 0
|
6月前
|
Java 测试技术 数据库连接
单元测试_JUnit常用单元测试注解介绍及代码演示 1
单元测试_JUnit常用单元测试注解介绍及代码演示
74 0
|
8月前
|
Java 测试技术 开发者
Junit单元测试框架【基础篇】
Junit单元测试框架【基础篇】
Junit单元测试框架【基础篇】
|
8月前
|
Java 测试技术 Maven
【高效编码】超全面的,超正的单元测试框架Junit的使用姿势
您好,我是码农飞哥,感谢您阅读本文!如果此文对您有所帮助,请毫不犹豫的一键三连吧。小伙伴们有想看的欢迎积极留言。前面几篇文章介绍Idea的常用插件,这只是本专栏很小的一部分,实现高效编码是一个很广泛的点,需要系统化的知识。其中单元测试就是非常重要的一部分。充分的单元测试可以很好的提高代码质量。本篇文章就将介绍单元测试框架Junit,小伙伴们是不是很期待呀,哈哈哈。
98 0
【高效编码】超全面的,超正的单元测试框架Junit的使用姿势
相关产品
云迁移中心
推荐文章
更多