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

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

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

  5.0.1    org.junit.jupiter junit-jupiter-api ${junit.jupiter.version} test   org.junit.jupiter junit-jupiter-engine ${junit.jupiter.version} test   

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

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

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

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

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

使用JUnit 5平台

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

所以你必须指定这个test依赖:

  5.2.0   [...]  org.junit.jupiter junit-jupiter-engine ${junit-jupiter.version} test  [...]  

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

    maven-failsafe-plugin 2.22.0    

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


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

但是, 与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错误,它不能用于故障安全的当前版本2.20(与surefire有错误的方式相同)。

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

  1.0.1   maven-failsafe-plugin 2.19.1   org.junit.platform junit-platform-surefire-provider ${junit.platform.version}    

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