Answers:
行覆盖率衡量您采取了多少条语句(一条语句通常是一行代码,不包括注释,条件等)。分支覆盖范围检查您是否对每个条件(如果,何时,用于)进行了正确和错误的分支。您的分支数将是条件分支数的两倍。
你为什么在乎?考虑示例:
public int getNameLength(boolean isCoolUser) {
User user = null;
if (isCoolUser) {
user = new John();
}
return user.getName().length();
}
如果调用此方法isCoolUser
设置为true
,你会得到100%的语句覆盖率。听起来不错?NOPE,如果您使用调用,将会有一个空指针false
。但是,在第一种情况下,您的分支覆盖率为50%,因此您可以看到测试中(通常在代码中)缺少某些内容。
将此代码作为简化示例:
if(cond) {
line1();
line2();
line3();
line4();
} else {
line5();
}
如果您的测试仅行使cond
真实性,而从不运行else
分支,则您拥有:
当单击列标题时,Cobertura 报表本身也会引入一些不错的弹出帮助工具提示:
行覆盖率 -此测试运行执行的行的百分比。
分支覆盖率 -此测试运行执行的分支百分比。
if(cond){
//branch 1
}else{
//branch 2
}
您需要处理分支1和分支2的所有行,以同时获得LineCoverage和BranchCoverage的100%覆盖率。
如果您根本错过了其他任何内容,那么您将获得分支机构覆盖率的一半。如果在if和else中都错过了#行中的任何内容,则您将获得100%的BranchCoverage,但行覆盖率不是100%。
希望这可以帮助。