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

Pan*_*ood 13 java maven maven-failsafe-plugin junit5

Mail 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>
Run Code Online (Sandbox Code Playgroud)

我的集成测试是正确命名(下面的**/*IT.java,**/IT*.java或者**/*ITCase.java,其中包括由故障安全默认值,由神火排除默认情况下).

有什么办法可以在Failsafe中使用JUnit 5测试吗?

Pan*_*ood 14

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


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

但是,与之一样maven-surefire-plugin,您可以maven-failsafe-plugin通过指定org.junit.platform:junit-platform-surefire-provider:1.0.1与早期版本的依赖关系来运行JUnit 5测试maven-failsafe-plugin:2.19.1.

它不具有故障保护的当前版本2.20(在该神火有错误的方式相同)由于工作的OutOfMemory错误.

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

<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>
Run Code Online (Sandbox Code Playgroud)

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

  • 对我来说,故障保护仍然没有进行集成测试.万无一失. (3认同)
  • github.com/TickleThePanda/junit5-failsafe-example上的repo被破坏,并且没有运行集成测试,因为failafe插件中没有执行元素. (2认同)

dav*_*xxx 6

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

由于神火释放2.22.0时, junit-platform-surefire-provider从JUnit的团队已被弃用,并将在JUnit平台的后续版本中停止使用。

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

使用JUnit 5平台

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

因此,您必须指定此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>
Run Code Online (Sandbox Code Playgroud)

maven-failsafe-plugin声明可能是那样简单:

<build>
    <plugins>           
        <plugin>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.22.0</version>
        </plugin>
    </plugins>
</build>  
Run Code Online (Sandbox Code Playgroud)

  • maven-failsafe-plugin 版本 2.22.0 本身还不支持 JUnit 5。当我升级到 2.22.0 并删除了依赖项部分时,maven 忽略了我所有的 JUnit5 集成测试。 (2认同)