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

Junit5:ClassNotFoundException:org.junit.platform.launcher.core.launcherFactory

陈业
2023-03-14

我正在尝试运行基本的JUnit5程序。使用Eclipse Oxygen.3a(4.7.3a)和OpenJDK9。获取以下错误-

java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
.
.
.
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
package io.javabrains;
public class MathUtils {
    public int add(int a, int b) { return a + b;}
}
package io.javabrains;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
class MathUtilsTest {
    @Test
    void test() {
        System.out.println("This test ran successfully");
        //fail("Not yet implemented");
    }
}

POM

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>io.javabrains</groupId>
  <artifactId>junit-5-basics</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>junit-5-basics</name>


  <properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit.jupiter.version>5.4.0</junit.jupiter.version>
  </properties>

   <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit.jupiter.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>${junit.jupiter.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

共有1个答案

陆子航
2023-03-14

Eclipse和JUnit有时会在移动版本中发生冲突

  • 要修复您的示例,请将JUnit 5添加到Eclipse中的类路径
  • Maven将运行并传递,因为它不使用缺少的启动器
  • Eclipse需要具有启动器的子库
  • 注意:最好将丢失的库添加到pom中,因为这个问题在跨IDE项目中仍然存在(不是每个人都使用eclipse)
 类似资料:
  • 我有一个工作环境,包括我不管理的bom和JUnit5测试,除非我从如果我从它们不会被maven surefire插件拾取。我阅读了许多部分,并在一个较小的项目中进行了测试,它的工作和拾取,我不知道该在这篇文章中包含什么,因此您有足够的信息来查看问题所在。此外,如果有人能解释我阅读的导入的幕后内容,JUnit 4和5都需要使用surefire即 与版本 我很感激。 注意到 < li >我的测试都在s

  • 我一直在查看JUnit5中参数化测试的示例(我是新手),但没有找到我想要的(除非我误解了如何使用它们)。 我遇到的所有示例都使用了诸如字符串、csv文件或methodSource之类的基本类型,但这些类型似乎都不适合我要做的事情。 如有任何帮助,不胜感激。

  • 让你了解一下我的代码:

  • 我找不到像TestWatcher一样替代/工作的任何注释。 我的目标:有两个功能,这取决于测试结果。 成功?做某事 失败?做点别的

  • null 不幸的是,运行测试失败。 有人偶然发现过类似的问题吗?是一般性的问题还是我的项目特有的问题?