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

在Eclipse中运行JUnit5所需的最低maven依赖项是什么?

姬选
2023-03-14
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.0.1</version>
    <scope>test</scope>
</dependency>

当我运行一个JUnit5测试时,我得到以下错误:

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:423)
    at java.lang.Class.newInstance(Class.java:442)
    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.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 11 more

通过挖掘堆栈溢出和其他站点,我仍然不太确定我遗漏了什么。如果有什么不同的话,我将使用Java8。

共有1个答案

艾雪风
2023-03-14

我继续这样做,让eclipse将库本身添加到一个示例非Maven项目中,看看我缺少了什么。经过一些实验,下面是在Eclipse中运行junit测试所需的pom的最小依赖项。

请注意,这并不会自动使junit测试在maven surfire中工作,只是Eclipse。

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.0.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.0.1</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>1.0.1</version>
        <scope>test</scope>
    </dependency>

是的,我完全知道junit-jupiter-engine可以传递地引入junit-jupiter-api,但是由于我是在测试编译时使用它的,所以包含它是一个很好的实践。

 类似资料:
  • 我正在eclipse中建立一个项目。此项目通过命令行成功构建(所有、、)等命令都运行良好。同时在STS或Eclipse上设置此项目。我看到有些依赖项没有下载,尽管它们存在于中。但是,在maven存储库中搜索它们,并将jar下载到我的本地计算机,然后将它们添加到构建路径中,就可以在Eclipse上运行。 我们需要对eclipse做什么来确保它从存储库下载所有的依赖项。 我的POM:

  • 我有一个包含以下文件的Java项目: C:\MyProject\myPackage\MyTests.class C:\MyProject\lib\junit-platform-console-standalone-1.5.2.jar C:\MyProject\lib\other-library.jar MyTests 文件是使用 IDE 编译的,该 IDE 具有 junit-platform-co

  • 问题内容: 在Maven中,项目的依赖项在pom.xml文件中指定。在IntelliJ IDEA中,即使对于Maven项目,相同的信息也存储在iml文件中。在两个地方具有相同的信息有什么需要? 问题答案: 导入Maven项目时,IDEA以其可以在内部理解和使用的格式表示其依赖关系模型。如果通过Maven管理依赖关系,则无需在IntelliJ IDEA模块设置中更改依赖关系。 这也可以用来试验依赖项

  • 我创建了一个Maven项目(可重用库),该项目有许多依赖项(编译时和运行时),它们也可以过渡地依赖于其他许多依赖项。在maven中,我可以在pom中添加依赖项。xml及其可传递依赖关系将自动处理。所以,我将毫无问题地运行。 现在,我有一个非Maven(基于Ant的)项目,上面创建的库(Maven Lib)将使用它。 在这种情况下,运行时间

  • 我认为配置文件很少,Tycho依赖其中的一些,Eclipse依赖其余的,但我不确定是什么。 第二种方法是删除项目中的所有jar,但将它们添加到或中。但是,这两个包都不起作用,因为在节中,Eclipse会抱怨这些包不存在。因此,依赖于此项目将找不到它们需要的包,这在Eclipse中导致了更多的错误。 有人知道处理这个问题的最佳做法吗?

  • 问题内容: 我使用Maven开发和构建了Java应用程序。我需要支持Java 1.6,因此我使用以下属性: 尽管如此,当我运行该应用程序时,仍然出现“不受支持的major.minor版本”错误,并且我怀疑我的一个依赖罐是使用比我需要支持的Java版本更新的Java版本进行编译的。 我的问题: 这有可能吗?我以为Maven会解决这种依赖版本问题。 有没有一种简单的方法来找出我所有依赖项的次要/主要版