Cobertura生成不正确的代码覆盖率



我有一个使用maven配置的庞大代码库。我的代码库被划分为不同的maven模块,因此我有一个主pom文件,每个子模块都有自己的pom文件。但这些模块仍然调用彼此的功能。Junit测试是为每个模块编写的。我正在使用Cobertura生成代码覆盖率。它为每个模块生成单独的覆盖率报告。当Cobertura为模块A生成代码覆盖率,并且模块A的特定代码被模块B的测试调用时。在这种情况下,Cobertur将模块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

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

参考:https://confluence.atlassian.com/display/CLOVER/Comparison+的+代码+覆盖范围+工具需要使用jacoco.exec文件生成代码覆盖率报告

最新更新