SonarQube:新增单元测试后覆盖率上升,为何New Lines to cover未减少?
问题解答
核心原因:Sonar中两个指标的定义完全不同
- New Lines to cover:这个指标统计的是你在当前分支中新增的所有需要被测试覆盖的代码总行数,只要你没有删除这些新增代码,这个数值就会保持固定,它是计算覆盖率的基数,而非“未被覆盖的行数”。
- 覆盖率:是上述新增代码行中,实际被单元测试执行到的比例。
对应你的场景拆解
- 第一次提交后,你新增了100行需要覆盖的代码,其中仅50行被测试覆盖,因此覆盖率为
50/100 = 50%。 - 新增单元测试后,被覆盖的行数从50增加到55,但新增的待覆盖代码总行数还是100,因此覆盖率变为
55/100 = 55%,而New Lines to cover的数值自然不会减少。
补充说明
如果你想查看未被覆盖的新增行数,应该关注Sonar中的Uncovered Lines指标,这个数值会随着测试覆盖的提升而减少。
内容的提问来源于stack exchange,提问作者Bacem W.
相关产品推荐
相关产品推荐

