gpt4 book ai didi

java - 使用 Maven 在 Eclipse 中为 JUnit 5 配置类路径

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:07:27 26 4
gpt4 key购买 nike

仅当项目的类路径中存在 JUnit 5 引擎时,Eclipse (2018-09) 才支持 JUnit 5 测试。

现在我的 Maven 项目有两种可能性:

  1. 通过eclipse JUnit库将其添加到项目中

    JUnitLib

    并且仅将 API 添加到依赖项中

    <dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <scope>test</scope>
    </dependency>
  2. 将引擎和 API 添加到我的 Maven pom

    <dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <scope>test</scope>
    </dependency>
    <dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <scope>test</scope>
    </dependency>

如果我做前者,那么每个使用 eclipse 的人都必须自己做。

如果我稍后这样做,那么我会用实现类污染我的(测试)编译时类路径,我(和其他 IDE 的用户)可能会使用这些实现类而不是 API 类。这也可能导致与 IDE 的冲突,IDE 可能需要不同版本的引擎,而不是 cp 上的引擎。 IIRC 这就是为什么 API 和引擎首先被分开的全部意义。

不幸的是,Maven 中没有 testRuntimeOnly 作用域(就像 gradle 中一样)。

TLDR:哪种方法是为 Maven 项目配置 JUnit 5 for eclipse 的正确方法?

最佳答案

If I do the former, then everybody using eclipse has to do this himself.

我假设您打算通过右键单击 JUnit 测试类并选择 Run as > JUnit Test 让 eclipse 用户有机会执行测试。我不知道这是否是正确的方法,但要这样做,除了JUnit Jupiter API/Engine 之外,您还需要添加一个额外的依赖项,即JUnit Platform启动器

例如:

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

不确定它是否相关,但我正在使用 maven-surefire-plugin 版本 2.22.1,如果 JUnit Platform Launcher 是,它会抛出 ClassNotFoundException失踪。

关于java - 使用 Maven 在 Eclipse 中为 JUnit 5 配置类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52648241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com