【问题标题】:Cobertura generating incorrect code coverageCobertura 生成不正确的代码覆盖率
【发布时间】:2016-05-16 08:30:57
【问题描述】:

我有一个使用 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

【问题讨论】:

  • 请指导我。

标签: java junit maven-cobertura-plugin


【解决方案1】:

我建议您尝试使用 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

【讨论】:

  • 将尝试 Jacoco。它是否也涵盖在其他模块上运行的测试(如问题中所述?)
  • 是的。它将涵盖部署在该服务器下的所有模块。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 2013-01-19
  • 1970-01-01
  • 2014-03-21
  • 2016-10-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多