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

时间:2017-02-05 06:10:10

标签: java eclipse code-coverage eclemma

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

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

谢谢

1 个答案:

答案 0 :(得分:0)

EclEmma - 是基于Java代码覆盖库的Eclipse插件,名为JaCoCo,用于执行Java字节码分析。由JaCoCo can be found in its documentation提供的覆盖计数器的描述。正如你所看到的那样--JaCoCo和EclEmma提供

  • 说明范围
  • 分支机构覆盖
  • 线路覆盖率
  • 和圈复杂度

不知道你所谓的节点覆盖范围,我猜你称之为边缘覆盖 - 是分支覆盖。

关于条件覆盖范围 - Wikipedia says

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 = truea = true, b = falsea = false, b = truea = false, b = false。然而,JaCoCo和EclEmma仅在2次测试后报告100%的覆盖率 - a = true, b = truea = false, b = false