如何使用 Maven Failsafe 插件运行 JUnit 5 集成测试?

2022-09-02 21:01:03

当我运行命令时,Maven Failsafe插件找不到我的JUnit 5集成测试,尽管它可以找到文件。mvn clean failsafe:integration-test

我有 和 作为测试依赖项:junit-jupiter-apijunit-jupiter-engine

<properties>
    <junit.jupiter.version>5.0.1</junit.jupiter.version>
</properties>

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

我的集成测试命名正确(在 、 之后,或者故障安全默认包含的 、或 默认情况下由 Surefire 排除的 )。**/*IT.java**/IT*.java**/*ITCase.java

有没有办法将 JUnit 5 测试与故障安全结合使用?


答案 1

编辑:这个答案在之前是正确的。请参阅davidxxx的答案,了解理想和最新的解决方案。maven-failsafe-plugin:2.22.0


目前不支持开箱即用的JUnit 5maven-failsafe-plugin

但是,maven-surefire-plugin 一样,您可以通过指定对 早期版本的 .maven-failsafe-pluginorg.junit.platform:junit-platform-surefire-provider:1.0.1maven-failsafe-plugin:2.19.1

由于 OutOfMemory 错误,它不适用于当前版本的故障安全(与 surefire 具有错误的方式相同)。

有关插件配置的示例,请参阅以下内容:

<properties>
    <junit.platform.version>1.0.1</junit.platform.version>
</properties>

<plugin>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>2.19.1</version>
    <dependencies>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>${junit.platform.version}</version>
        </dependency>
    </dependencies>
</plugin>

你可以在GitHub上找到一个完整的工作(和一个失败的例子)。要测试它是否有效,您可以运行 。mvn clean failsafe:integration-test


答案 2

请注意,从 JUnit 5 文档中:不应再使用:junit-platform-surefire-provider

由于 Surefire 的发布,来自 JUnit 团队的 已被弃用,并将在 JUnit 平台的后续版本中停止使用。2.22.0junit-platform-surefire-provider

此外,您还可以阅读 maven-surefire-plugin 文档

使用 JUnit 5 平台

要开始使用 JUnit 平台,您需要向项目添加至少一个实现。例如,如果要使用 Jupiter 编写测试,请将测试工件添加到 POM 中的依赖项中TestEnginejunit-jupiter-engine

因此,您必须指定此依赖项:test

<properties>
    <junit-jupiter.version>5.2.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>
     [...] 
</dependencies>

声明可以像这样简单:maven-failsafe-plugin

<build>
    <plugins>           
        <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.22.0</version>
        </plugin>
    </plugins>
</build>  

推荐