Cobertura生成错误的代码覆盖率

时间:2016-05-16 08:30:57

标签: java junit maven-cobertura-plugin

我使用maven配置了庞大的代码库。我的代码库分为不同的maven模块,因此我有一个主pom文件,每个子模块都有自己的pom文件。但这些模块仍然相互调用功能。为每个模块编写Junit测试。我正在使用Cobertura来生成代码覆盖率。它为每个模块生成单独的覆盖报告。当Cobertura为模块A生成代码覆盖时,来自模块A的特定代码将通过模块B的测试调用。在这种情况下,Cobertura将模块A中的代码标记为未覆盖。这是预期的行为吗?或者我的配置错误了?

Maven - 子模块中的Cobertura配置:

构建部分:

<plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>${org.codehaus.mojo.cobertura-maven-plugin.version}</version>
            </plugin>

报告部分:

<plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>${org.codehaus.mojo.cobertura-maven-plugin.version}</version>
                <configuration>
                    <formats>
                        <format>xml</format>
                    </formats>
                </configuration>
            </plugin>

运行Cobertura报告的命令:

mvn cobertura:cobertura

1 个答案:

答案 0 :(得分:2)

我建议你尝试使用JaCoCo代码覆盖工具进行运行时覆盖生成,这种代码覆盖工具更易于实现,并且在代码覆盖[包,类,方法,行]方面更具表现力。 与Cobertura相比,它提供了额外的功能。 我尝试了JaCoCo和其他工具,发现与其他工具相比,JaCoCo生成的报告更易于理解和有用。

参见: https://confluence.atlassian.com/display/CLOVER/Comparison+of+code+coverage+tools Need to generate Code Coverage Reports using jacoco.exec file