我在我的pom中配置了cobertura代码覆盖率:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.4</version>
<configuration>
<instrumentation>
<excludes>
<exclude>**/*Exception.class</exclude>
</excludes>
</instrumentation>
<formats>
<format>xml</format>
<format>html</format>
</formats>
</configuration>
</plugin>
按照以下命令开始测试:
mvn clean cobertura:cobertura
但如果其中一个单元测试失败,Cobertura只会记录此信息并且不会标记构建失败。
Tests run: 287, Failures: 1, Errors: 1, Skipped: 0
Flushing results...
Flushing results done
Cobertura: Loaded information on 139 classes.
Cobertura: Saved information on 139 classes.
[ERROR] There are test failures.
.................................
[INFO] BUILD SUCCESS
如何在单元测试失败中配置Cobertura标记构建失败?
提前致谢。
答案 0 :(得分:3)
如果你从cobertura插件运行一个特殊的目标,如果测试没有成功通过,你就不能强迫maven失败。插件目标将成功。
您可以将cobertura运行绑定到生命周期阶段(例如测试)。这将使cobertura目标在此阶段(mvn clean test
)运行,并在此阶段失败时失败。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.4</version>
<configuration>
<formats>
<format>xml</format>
<format>html</format>
</formats>
</configuration>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>cobertura</goal>
</goals>
</execution>
</executions>
</plugin>
这种解决方案的缺点是cobertura目标将在每个test
阶段运行。
答案 1 :(得分:0)
您可以将haltOnFailure
属性设置为true。
<configuration>
...
<check>
...
<haltOnFailure>true</haltOnFailure>
...
</check>
</configuration>