我有一个关于 EclEmma 覆盖工具的问题,
EclEmma 覆盖工具是否执行节点或边或条件或路径覆盖?解释
谢谢
EclEmma - 是基于名为JaCoCo的 Java 代码覆盖库的 Eclipse 插件,它执行 Java 字节码的分析。JaCoCo 提供的覆盖计数器的描述可以在其文档中找到。正如您在其中看到的 - JaCoCo 和因此 EclEmma 提供
不知道你所说的节点覆盖率,我猜你所说的边缘覆盖率 - 是分支覆盖率。
关于条件覆盖 -维基百科说
if (a && b) { /* ... */ }
条件覆盖可以通过两个测试来满足
a=true, b=false
,a=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 = false
a = false, b = true
a = false, b = false
a = true, b = true
a = false, b = false