差异代码覆盖率

问题描述 投票:0回答:6

我们正在向以前未测试的代码添加单元测试,因为需要修改该代码。 由于已知任何包中的大多数代码都未经测试,因此很难获得有用的覆盖率指标。

是否有任何工具可用于测量差异代码覆盖率,即单元测试覆盖的给定变更集中修改的代码的百分比?

java unit-testing code-coverage
6个回答
4
投票

使用pycobertura。它是一个命令行工具,通过比较两个覆盖率报告来防止代码覆盖率回归。它告诉您新代码在覆盖范围方面是比以前的版本更好还是更差。

$ pycobertura diff ./master/coverage.xml ./myfeature/coverage.xml

它与语言无关,因为它仅依赖于测试/覆盖工具生成的 Cobertura 报告(XML 文件)。

Pycobertura 还可以生成 HTML 报告,非常适合 Jenkins 等 CI/CD 工具。

enter image description here

https://github.com/aconrad/pycobertura


1
投票

像 Jenkins 这样的持续集成工具可以让您保留测试覆盖率的历史记录,并向您显示一个图表,其中包含与以前的版本相比的覆盖率趋势。示例:Cobertura Jenkins 插件


1
投票

有一个 gradle 插件可以计算增量代码覆盖率

https://github.com/gw-kit/delta-coverage-plugin

Delta Coverage 插件生成标准 JaCoCo HTML 报告,但仅突出显示修改后的代码。

enter image description here


0
投票

了解一下 Sonar,它是分析整个应用程序质量和覆盖范围的好工具。


0
投票

我最近正是这样做的,使用 JaCoCoConQAT 框架进行代码分析。做法如下:

  1. 从基线版本和头部版本加载源代码(以及潜在的中间版本,如果您也在中间进行了测试)
  2. 逐个方法比较程序历史记录以确定发生更改的位置
  3. 为每个测试版本注释覆盖信息
  4. 搜索自上次更改以来尚未涵盖的方法

还有一篇博客文章包含更详细的描述,包括可视化和更高级的主题,例如重构检测以仅识别值得测试的更改。


0
投票

您可以使用 diff-test-coverage 为此。

diff-test-coverage
是一个 Node.js 命令行工具,它根据(源代码控制)差异过滤测试覆盖率。

它的工作原理是过滤覆盖率报告信息,因此它可以报告新代码的覆盖率信息。

diff-test-coverage

它支持 Git 和 Mercurial 以及所有常见的覆盖率报告格式。

© www.soinside.com 2019 - 2024. All rights reserved.