我使用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
答案 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