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

时间:2017-11-02 15:34:19

标签: java maven maven-failsafe-plugin junit5

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

我将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>

我的集成测试已正确命名(遵循**/*IT.java**/IT*.java或默认情况下由Failsafe包含的**/*ITCase.java,并默认排除在Surefire之外。

我有什么方法可以使用Failsafe进行JUnit 5测试吗?

2 个答案:

答案 0 :(得分:14)

修改:在maven-failsafe-plugin:2.22.0之前,此答案是正确的。有关理想和最新的解决方案,请参阅davidxxx's answer

maven-failsafe-plugin当前为doesn't support JUnit 5,开箱即用。

但是,like with maven-surefire-plugin,您可以使用maven-failsafe-plugin运行JUnit 5测试,方法是使用早期版本的org.junit.platform:junit-platform-surefire-provider:1.0.1指定对maven-failsafe-plugin:2.19.1的依赖关系。

由于OutOfMemory error,它无法使用故障安全的当前版本2.20(与确定错误相同的方式)。

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

<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>

您可以找到a full example of this working (and a failing one) on GitHub。要测试它是否有效,您可以运行mvn clean failsafe:integration-test

答案 1 :(得分:4)

请注意,the JUnit 5 documentation中的junit-platform-surefire-provider应该不再使用:

  

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

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

  

使用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>

maven-failsafe-plugin声明可能很简单:

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