代码覆盖率 java,关于Java:差异代码覆盖率

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

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

对于.net,我使用NCoverCop sourceforge.net/projects/ncovercop来比较ncover的xml输出。 也许它可以适应您的Java输出,或者有一个Java等效项。

使用pycobertura。它是一个命令行工具,通过区分两个覆盖率报告来防止代码覆盖率下降。它会在覆盖率方面告诉您新代码是比以前的版本好还是差。

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

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

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

b16402bf223c6d8afe915f005ebd6e32.png

https://github.com/aconrad/pycobertura

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

分别使用了Cobertura和Jenkins,这对一点很有帮助。 但是我们希望能够看到新代码/更改代码的覆盖范围(即增量代码的80%,而所有代码的比例为1%)。 能够挖掘单个包/类也有帮助,但前提是您知道哪些包/类已被修改。

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

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

909edb213dbb60d66a243f79956c934d.png

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

最近,我使用JaCoCo和ConQAT框架进行代码分析就做到了这一点。方法如下:

从基准版本和标头版本(以及潜在的中间版本,如果您还进行了中间测试)加载源代码

逐个方法比较程序历史记录以确定更改发生的位置

为每个经过测试的版本注释覆盖率信息

搜索自上次更改以来未涉及的方法

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值