0

我有一个关于 EclEmma 覆盖工具的问题,

EclEmma 覆盖工具是否执行节点或边或条件或路径覆盖?解释

谢谢

4

1 回答 1

0

EclEmma - 是基于名为JaCoCo的 Java 代码覆盖库的 Eclipse 插件,它执行 Java 字节码的分析。JaCoCo 提供的覆盖计数器的描述可以在其文档中找到。正如您在其中看到的 - JaCoCo 和因此 EclEmma 提供

  • 指令覆盖率
  • 分支覆盖
  • 线路覆盖
  • 和圈复杂度

不知道你所说的节点覆盖率,我猜你所说的边缘覆盖率 - 是分支覆盖率。

关于条件覆盖 -维基百科说

if (a && b) { /* ... */ }

条件覆盖可以通过两个测试来满足a=true, b=falsea=false, b=true

&&在 Java 的情况下,短路运算符似乎有点奇怪——第二次测试不能触发对“b”值的检索。

关于路径覆盖 - JaCoCo 不提供它,可以使用以下示例演示:

void fun(boolean a, boolean b) {
  if (a) { /* ... */ }
  if (b) { /* ... */ }
}

不计例外情况,通过此方法有 4 条路径。因此,对于完整路径覆盖,将需要 4 次测试 - a = true, b = true、和. 然而,JaCoCo 和 EclEmma 仅在 2 次测试后就会报告 100% 的覆盖率 -并且.a = true, b = falsea = false, b = truea = false, b = falsea = true, b = truea = false, b = false

于 2017-02-06T08:57:54.343 回答