我有一个多模块项目,并且在根 pom 中定义了故障保护,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19</version>
<configuration>
<includes>
<include>**/*IntegrationTest.java</include>
<include>**/*JourneyTest.java</include>
<include>**/*CucumberFeatureTest.java</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<excludes>
<exclude>**/*IntegrationTest.java</exclude>
<exclude>**/*JourneyTest.java</exclude>
<exclude>**/*CucumberFeatureTest.java</exclude>
</excludes>
</configuration>
</plugin>
我的其他 pom 中没有定义 Failsafe。如果我跑mvn verify
,它跳过集成测试(它运行单元测试)。但如果我跑mvn test-compile failsafe:integration-test
,它运行集成测试。
我假设故障安全应该在这两种情况下运行。那么为什么当我输入时它不运行mvn verify
?
UPDATE:刚刚注意到它围绕着这些标签:
<build>
<pluginManagement> <!-- oops -->
<plugins>
<plugin>
我觉得这可以解释原因,但我不确定为什么unit测试仍然像您期望的那样运行mvn verify
and mvn test
。为什么在这方面,surefire 的工作方式与failsafe 不同?
您需要将failsafe的集成测试目标绑定到maven的integration-test
and verify
阶段。默认情况下,故障安全插件不包含在vanilla
Maven 项目。你需要添加它。所以即使有一个integration-test
生命周期,默认情况下它不包括在内(好吧,至少不运行maven-failsafe-plugin
)。您将其添加到integration-test
and verify
阶段(它需要两个阶段,它将在verify
仅阶段[如果前面的集成测试失败],以便post-integration
生命周期阶段仍然有机会运行和清理资源,因此称为“故障安全”)。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19</version>
<configuration>
<includes>
<include>**/*IntegrationTest.java</include>
<include>**/*JourneyTest.java</include>
<include>**/*CucumberFeatureTest.java</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)