我有一个关于EclEmma覆盖工具的问题
EclEmma覆盖工具是否执行节点、边、条件或路径新闻报道解释
谢谢
EclEmma是一个基于Java代码覆盖库的Eclipse插件,名为JaCoCo,用于分析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
、a = true, b = false
、a = false, b = true
和a = false, b = false
。然而,JaCoCo和EclEmma仅在两次测试(a = true, b = true
和a = false, b = false
)后就报告了100%的覆盖率。