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

关于Maven依赖项设置的JUnit5文档的澄清

阙弘博
2023-03-14

JUnit5页面要求将澄清问题发布在StackOverflow上,所以就在这里。

用户指南说JUnit 5=JUnit Platform JUnit Jupiter JUnit Vintage,JUnit Platform是“启动测试框架的基础”。所以JUnit平台听起来很重要。

它还说,“要了解哪些工件可供下载并包含在项目中,请参阅依赖元数据。”当您访问时,请参阅关于JUnit平台的信息,10.1.1.JUnit Platform,组ID:org.JUnit。平台,版本:1.6.2首先列出。所以这听起来像是你必须把它包括在你的依赖中。

然而,用户指南也建议去建立支持。在那里,Maven指令推荐包含< code > Maven-surefire-plugin 、< code > Maven-fail safe-plugin 、< code>junit-jupiter-api和< code > JUnit-Jupiter-engine 。

用户指南还建议查看示例项目。在这里,Maven示例只包含工件< code>junit-jupiter。

所以我的问题是:遵循哪个建议?实际的指示是什么?

对于普通的最终用户来说,似乎最好的选择是遵循示例项目。然而,它显示为用户指南页面中的最后一个建议,并且似乎与之前的解释相矛盾。这会产生一些不必要的猜测,我建议简化用户指南的这部分,以便更直接地。

共有1个答案

丁振海
2023-03-14

您可以使用 junit-jupiter,这是一个模块,它将包括 junit-jupiter-apijunit-jupiter-engine

/**
 * Aggregates all JUnit Jupiter modules.
 *
 * @since 5.4
 */
module org.junit.jupiter {
    requires transitive org.junit.jupiter.api;
    requires transitive org.junit.jupiter.engine;
    requires transitive org.junit.jupiter.params;
}

这个pom看起来可以开始了(在这里找到),链接来自:

对于Maven,请查看junit5-jupiter-starter-maven项目。

xml prettyprint-override"><?xml version="1.0" encoding="UTF-8"?>
<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>com.example</groupId>
    <artifactId>junit5-jupiter-starter-maven</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>${maven.compiler.source}</maven.compiler.target>
        <junit.jupiter.version>5.6.2</junit.jupiter.version>
    </properties>

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

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.2</version>
            </plugin>
        </plugins>
    </build>

</project>

所以:

  1. 创建pom.xml如上
  2. 在src/test/java/org/example/MyExampleTest.java中创建测试类:
package org.example;

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

class MyExampleTest {

  @Test
  void thisFailsTest() {
    fail(); //start here
  }

}

[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ junit5-jupiter-starter-maven ---
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running org.example.MyExampleTest
[ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.017 s <<< FAILURE! - in org.example.MyExampleTest
[ERROR] thisFailsTest  Time elapsed: 0.014 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: 
    at org.example.MyExampleTest.thisFailsTest(MyExampleTest.java:10)

[INFO] 
[INFO] Results:
[INFO] 
[ERROR] Failures: 
[ERROR]   MyExampleTest.thisFailsTest:10
[INFO] 
[ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
 类似资料:
  • 问题内容: 我第一次使用Maven时,就陷入了依赖关系。 我使用Eclipse创建了一个Maven项目并添加了依赖项,并且该项目运行正常。 但是当我尝试通过命令行运行它时: 它下载依赖项,成功构建,但是当我尝试运行它时,出现NoClassDefFoundError: 我的是这样的: 谁能帮我? 问题答案: 默认情况下,Maven不会在生成的JAR文件中捆绑依赖项,并且在尝试通过命令行执行JAR文件

  • 问题内容: 我正在开发一个Portlet,可以在其中对SQL Server数据库进行Hibernate访问。我为此设置了 maven依赖项 ,并尝试以与MySql相同的方式找出SQL Server连接器。 如果我搜索SQL Server连接器,我的Google搜索仍然仅提供Mysql。正确的 maven依赖项 值是多少? 问题答案: 从Olaf提供的链接下载驱动程序JAR,并将其添加到本地Mave

  • 问题内容: 我正在使用Spring 3和Hibernate 4 JPA。我对 javax.persistence JAR 感到困惑。我在Google上发现了以下两个Maven依赖项。请告诉我以下两个依赖项中需要哪个? 问题答案: 其中的第一个是API Jar,它定义了应用程序应使用的与供应商无关的接口。 第二个是该API的EclipseLink实现。 可以删除对第一个依赖项的引用,而只需使用Ecl

  • 我有两个Maven(GWT)项目,其中一个应该依赖于另一个。我只是添加了依赖项,比如: 这些类被正确引用,我可以在我的其他项目中使用它们。但如果我想触发maven构建,它会抱怨:“无法解析项目的依赖项:找不到工件myGroup:MyArtifact:jar:1.0-SNAPSHOT” 该项目没有jar,因为它是一个GWT Web应用程序。它有一个“战争”档案。我测试了一下论点,尝试了“pom”或“

  • 最近,我发现了以下问题: 当我为我的项目设置依赖项管理时,我有一个child-pom,它使用具有依赖项的插件,我想要与在我的依赖项管理中声明的依赖项同步。 在根pom中,我在依赖项管理中声明: 在子pom中,我有一个插件需要gwt-user: 但是,如果我移除gwt-maven-plugin中使用的依赖版本,编译就会失败。 是不是还有别的办法可以实现呢? PS:在maven和maven插件中有一个