maven-failsafe-plugin
是 Maven 构建工具中的一个插件,专门用于执行集成测试(Integration Tests)。与 maven-surefire-plugin
不同,surefire
通常用于执行单元测试,而 failsafe
专门用于处理那些需要在整个应用程序启动并运行后执行的更复杂的测试,比如使用真实的数据库、外部服务、或者完整应用环境的集成测试。
工作原理
maven-failsafe-plugin
的主要目的是执行项目中的集成测试,这些测试通常是在应用程序构建并部署到一个测试环境后进行的。这个插件提供了两项主要的目标:
integration-test
:运行项目中的集成测试。verify
:确保测试结果符合预期,并在测试失败时停止构建过程。
配置 maven-failsafe-plugin
以下是如何在 pom.xml
文件中配置 maven-failsafe-plugin
的示例:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.0.0-M5</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
配置细节
- 测试类的命名约定:
maven-failsafe-plugin
只会执行符合特定命名模式的测试类:- 类名以
IT
开头,如ITMyClassTest.java
。 - 类名以
IT
结尾,如MyClassIT.java
。 - 类名以
ITCase
结尾,如MyClassITCase.java
。
- 类名以
- 这些命名模式可以通过配置自定义。
<configuration>
<includes>
<include>**/IT*.java</include>
<include>**/*IT.java</include>
<include>**/*ITCase.java</include>
</includes>
</configuration>
-
与
maven-surefire-plugin
的区别:maven-surefire-plugin
主要用于运行单元测试,通常在test
生命周期阶段执行。maven-failsafe-plugin
主要用于运行集成测试,通常在integration-test
和verify
生命周期阶段执行。
-
典型的 Maven 生命周期:
validate
:验证项目是否正确且所有必要信息都已提供。compile
:编译项目的源代码。test-compile
:编译测试代码。test
:运行单元测试。integration-test
:运行集成测试(由maven-failsafe-plugin
执行)。verify
:检查集成测试的结果(由maven-failsafe-plugin
执行)。install
:将包安装到本地 Maven 仓库。deploy
:将最终的构建包部署到远程仓库。
结合 JaCoCo 使用
maven-failsafe-plugin
可以与 JaCoCo 插件结合使用,以便在集成测试阶段收集代码覆盖率数据。
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.6</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.0.0-M5</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
总结
maven-failsafe-plugin
是 Maven 项目中专门用于执行集成测试的插件,通常与 maven-surefire-plugin
一起使用,前者用于集成测试,后者用于单元测试。通过配置 maven-failsafe-plugin
,你可以确保在项目的构建生命周期中适当的阶段执行集成测试,并结合 JaCoCo 插件生成覆盖率报告。