Java 为什么';";mvn验证“;运行我的集成测试?
我有一个多模块项目,我在根pom中定义了故障保护,如下所示:Java 为什么';";mvn验证“;运行我的集成测试?,java,maven,maven-failsafe-plugin,Java,Maven,Maven Failsafe Plugin,我有一个多模块项目,我在根pom中定义了故障保护,如下所示: org.apache.maven.plugins maven故障保护插件 2.19 **/*IntegrationTest.java **/*JourneyTest.java **/*CucumberFeatureTest.java 集成测试 验证 org.apache.maven.plugins maven surefire插件 2.19 **/*IntegrationTest.java **/*JourneyTest.java
org.apache.maven.plugins
maven故障保护插件
2.19
**/*IntegrationTest.java
**/*JourneyTest.java
**/*CucumberFeatureTest.java
集成测试
验证
org.apache.maven.plugins
maven surefire插件
2.19
**/*IntegrationTest.java
**/*JourneyTest.java
**/*CucumberFeatureTest.java
故障保护在我的其他POM中没有定义。如果我运行mvnverify
,它将跳过集成测试(它运行单元测试)。但如果我运行mvn test compile failsafe:integration test
,它将运行集成测试
我假设故障保护应该在这两种情况下运行。那么,为什么在我键入mvn verify
时它不运行呢
更新:刚刚注意到这是围绕这些标签的:
<build>
<pluginManagement> <!-- oops -->
<plugins>
<plugin>
我觉得这就解释了原因,但我不确定为什么单元测试仍然像
mvn-verify
和mvn-test
一样运行。为什么surefire在这方面的工作与failsafe不同?您需要将failsafe的集成测试目标绑定到maven的集成测试和验证阶段。默认情况下,故障保护插件不包括在vanilla
maven项目中。你需要添加它。因此,即使存在集成测试
生命周期,默认情况下也不包括它(至少不运行maven故障保护插件
)。您将其添加到集成测试
和验证
阶段(这两个阶段都需要,它只会在验证
阶段使构建失败[如果前面的集成测试失败],因此集成后
生命周期阶段仍然有机会运行和清理资源,因此命名为“fail-safe”)
org.apache.maven.plugins
maven故障保护插件
2.19
**/*IntegrationTest.java
**/*JourneyTest.java
**/*CucumberFeatureTest.java
集成测试
验证
我在运行mvn verify时遇到了类似的问题,因为没有执行集成测试,只有单元测试。
它在将技能测试标记为假后起作用:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<skipTests>false</skipTests>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
org.apache.maven.plugins
maven故障保护插件
2.19.1
假的
集成测试
验证
这一变化对结果没有影响。我将更新原始问题以包括这一点是的,将故障保护插件绑定到执行是正确的解决方案。不幸的是,与许多Maven文档一样,它没有被很好地指出。此设置记录在中。对于追随者,请参阅Daniel Kaplan的“更新”问题,了解为什么它不会影响他的结果(但这是正确的答案)。我相信Surefire包含在标准POM中,但Failsafe没有。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<skipTests>false</skipTests>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>