当我运行命令mvn clean failsafe:integration-test
时,Mail Failsafe插件无法找到我的JUnit 5集成测试,尽管它可以找到文件。
我将junit-jupiter-api
和junit-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测试吗?
答案 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>