SonarQube警告"单元测试的分支覆盖率不足"

sac*_*ach 5 java sonarqube

有没有人知道这个问题"单元测试的分支覆盖率不足"?我的班级代码覆盖率为99%,但我不断收到相同类别的声纳警告"单元测试的分支覆盖率不足:单元测试需要覆盖111个分支以达到65.0%分支覆盖率的最低阈值."通常这样由于if/else条件的覆盖率不足而发生错误,因为我们必须处理正/负两种情况.有人对这个警告有什么了解吗?

谢谢Sach

ben*_*ico 6

这意味着您的代码中有一些未涵盖的分支.

例如 :

boolean foo() {
  return a || b || c; 
}
Run Code Online (Sandbox Code Playgroud)

如果在你的测试中你总是有一个是真的,那么你确实覆盖了这条线但不是所有分支都可能.

请注意尝试使用资源,因为这会在字节码中生成很多分支(并且您不会在源代码中看到它们),并且您很可能无法覆盖所有这些分支.


Ger*_*cso 0

这是一个很好的维基百科页面,解释了不同覆盖率指标之间的差异: 链接

Short 中的分支覆盖率涵盖了 if-else 情况,您需要测试这两种情况以实现 100% 的覆盖率。