4

我在我的 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 标记构建失败?

提前致谢。

4

2 回答 2

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阶段运行。

于 2011-02-28T20:25:41.673 回答
0

您可以将haltOnFailure属性设置为 true。

<configuration>
    ...
    <check>
        ...
        <haltOnFailure>true</haltOnFailure>
        ...
    </check>
</configuration>
于 2011-02-28T15:23:46.307 回答