Gil*_*e59 88 testing cobertura maven test-coverage
我使用Cobertura Maven插件进行我的一个项目.但我对生成的报告有疑问:
线路和分支覆盖范围有什么区别?
Kan*_*ane 143
行覆盖率衡量您采用的语句数量(语句通常是一行代码,不包括注释,条件等).分支覆盖率检查您是否为每个条件(if,while,for)采用了true和false分支.你的分支数量是条件数的两倍.
你为什么在乎?考虑这个例子:
public int getNameLength(boolean isCoolUser) {
User user = null;
if (isCoolUser) {
user = new John();
}
return user.getName().length();
}
Run Code Online (Sandbox Code Playgroud)
如果使用isCoolUser
set to 调用此方法true
,则可获得100%的语句覆盖率.听起来不错?NOPE,如果你打电话,会有一个空指针false
.但是,在第一种情况下,您有50%的分支覆盖率,因此您可以看到测试中缺少某些内容(通常在代码中).
Tom*_*icz 58
以此代码为简单示例:
if(cond) {
line1();
line2();
line3();
line4();
} else {
line5();
}
Run Code Online (Sandbox Code Playgroud)
如果你的测试只是练习cond
是真的而且永远不会运行else
你拥有的分支:
此外,Cobertura 报告本身在单击列标题时引入了一些不错的弹出式帮助工具提示:
行覆盖率 - 此测试运行执行的行百分比.
分支覆盖率 - 此测试运行执行的分支百分比.
归档时间: |
|
查看次数: |
40739 次 |
最近记录: |