Eclemma用红色表示Java中的else条件,这导致代码覆盖率很低



在下面的示例代码中,突出显示

  • 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上得到红线,因为它根本没有经过测试。

你需要重构你的代码,这样你的测试应该涵盖IFELSE。只有你的代码覆盖率是100%。

看起来你只是在测试EclEmma如何工作,否则你应该编写适当的Junit测试来测试代码的代码覆盖率。

您可以查看此URL以学习Junits: http://www.tutorialspoint.com/junit/

最新更新