我想使用maven-failsafe-plugin来运行一些集成测试。如果任何测试失败,我希望Maven构建失败,而不是构建成功。
Tests run: 103, Failures: 1, Errors: 0, Skipped: 26
[INFO] BUILD SUCCESS*我如何配置它,构建不成功是什么?
我的failsafe插件配置为:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${failsafe.version}</version>
<configuration>
<systemProperties>
<CI_INTEGRATION_OVERRIDE_PATH>${basedir}/..</CI_INTEGRATION_OVERRIDE_PATH>
</systemProperties>
<includes>
<include>**/integration/**/*.java</include>
</includes>
<excludes>
<exclude>**/integration/**/*TestSuite.java</exclude>
</excludes>
</configuration>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>发布于 2012-10-04 16:00:34
解决方案。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
<executions>
<execution>
<id>unit-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>false</skip>
<excludes>
<exclude>**/*IntegrationTest.java</exclude>
</excludes>
</configuration>
</execution>
<execution>
<id>integration-test</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>false</skip>
<enableAssertions>false</enableAssertions>
<includes>
<include>**/*IntegrationTest.java</include>
</includes>
<systemPropertyVariables>
<integration>${integration}</integration>
</systemPropertyVariables>
</configuration>
</execution>
</executions>
</plugin>发布于 2013-10-02 21:36:17
正如Andrew所指出的,正确的解决方案是按照预期使用故障保护。集成测试目标是专门设计的,不会导致构建失败。如果希望构建失败,请调用mvn verify或mvn failsafe:verify
为了让verify目标起作用,它需要读取集成测试的结果,这些结果默认情况下会写入${project.build.directory}/failsafe-reports/failsafe-summary.xml,因此要确保生成了这些结果。
此外,您还必须确保将maven-failsafe-plugin配置绑定到executions部件中的integration-test目标和verify目标。
当集成测试失败时,如果不添加其中任何一个,将导致maven成功构建,而不是失败。
发布于 2012-09-05 21:36:01
由于您正在运行mvn clean install,因此应该同时执行integration-test和verify阶段。根据failsafe插件文档,failsafe:integration-test和failsafe:verify目标被绑定到这些阶段,所以我不认为需要额外调用failsafe:integration-test。
然而,我不确定我是否信任failsafe插件文档。今年早些时候,我为某人做了answered a similar question。事实证明,他必须明确地将每个目标绑定到正确的阶段,然后故障保险才能按预期工作。也许值得一试。
https://stackoverflow.com/questions/12279160
复制相似问题