在下面的示例代码中,突出显示
-
public class Test {
和System.out.println("false");
为红色 -
if (a<15)
为黄色
我得到的代码覆盖率百分比是62%。Eclemma报告:
Missed Instructions Cov. 62% ,
Missed Branches Cov. 50% ,
Missed 2 ,
Cxty 3 ,
Missed 2 ,
Lines 7 ,
Missed 1,
Methods 2 ,
Missed 0 ,
Classes 1
请解释一下,为什么代码覆盖率只有62% ?
package sanityReady;
public class Test {
public static void main(String[] args) {
int a=10;
if (a<15)
{
System.out.println("true");
}
else
{
System.out.println("false");
}
}
}
EclEmma通常尝试执行您的测试来计算代码覆盖率。您的测试应该涵盖普通java类中编写的所有条件。
通常当你把if -ELSE写在一起时,EclEmma期望写两个测试来测试两个条件,如果你的测试只测试if或ELSE,那么它会把if -ELSE标记为黄色,表明它是部分测试!
在上面的例子中,你有一个=10,它总是小于15,所以你的测试只测试IF
部分。因此,您在else
上得到红线,因为它根本没有经过测试。
你需要重构你的代码,这样你的测试应该涵盖IF
和ELSE
。只有你的代码覆盖率是100%。
看起来你只是在测试EclEmma如何工作,否则你应该编写适当的Junit测试来测试代码的代码覆盖率。
您可以查看此URL以学习Junits: http://www.tutorialspoint.com/junit/