差分代码覆盖率

时间:2011-09-02 15:51:16

标签: java unit-testing code-coverage

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

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

6 个答案:

答案 0 :(得分:2)

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

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

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

Pycobertura还可以生成适合CI / CD工具(如Jenkins)的HTML报告。

enter image description here

https://github.com/aconrad/pycobertura

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我最近使用JaCoCoConQAT框架进行了代码分析。方法如下:

  1. 从基线版本和头版本加载源代码(如果您还在中间进行了测试,则可能是中间版本)
  2. 通过方法比较程序历史记录方法以确定发生了哪些更改
  3. 为每个测试版本添加注释信息
  4. 搜索上次更改后未涵盖的方法
  5. 还有一个blog post包含更详细的描述,包括可视化和更高级的主题,如重构检测,以识别值得测试的更改。

答案 4 :(得分:0)

您可以使用diff-test-coveragediff-test-coverage是Node.js命令行工具,可基于(源代码控制)差异过滤测试覆盖率。

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

diff-test-coverage

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

答案 5 :(得分:0)

有一个gradle插件来计算差异代码覆盖率

https://github.com/form-com/diff-coverage-gradle

您所需要做的就是为插件提供差异文件,或者您可以使用the example中显示的git diff工具