【发布时间】:2017-03-07 07:25:13
【问题描述】:
我已运行 EclEmma 以覆盖我的 JUnit 测试用例,并且在某些测试用例上已达到 100%。但是,在覆盖率为 82% 或 95% 的那些上,我的代码旁边有一条消息说“错过了 2 个分支中的 1 个”,我似乎无法解决这个问题。
查看我的课程后,我注意到这条消息只出现在我的 if 语句旁边,这就是我的测试无法 100% 覆盖的原因。
我想我是在问是否有人知道如何在 JUnit 中测试 if 语句,这样就不会错过任何一个分支。
这是我要测试的代码:
private double height;
public void setHeight(double height){
if(height <=0){
this.height = 0;
}
else{
this.height = height;
}
}//method close
(我正在使用 JUnit 4)
【问题讨论】:
-
呼叫
setHeight用一个负数、一个正数,也许用0。真的,你到底在问什么? -
所以,测试高度 0。这将覆盖两个分支。
-
顺便说一句:用 == 比较双精度在 Java(和其他语言)中是不安全的。 stackoverflow.com/questions/25160375/…
-
您是否必须拥有 100% 的覆盖率?我认为没有必要对代码进行大量覆盖,只要合理的百分比就可以了。覆盖所有分支和代码行并不能保证您的代码是正确的。也许你可以报道更多真实的案例。
-
@Rainer 抱歉,我再也听不到这种废话了。将双打与 == 进行比较有时并不安全,但有时却是。在这里,使用
标签: java eclipse junit code-coverage eclemma