cobertura报告中行号旁边的颜色和数字是多少

时间:2016-10-21 16:21:21

标签: maven testing junit code-coverage cobertura

我使用mvn cobertura:cobertura来生成这个cobertura JUnit测试覆盖率报告。任何人都可以向我解释一下这个数字旁边的数字是什么意思?谢谢。

enter image description here

1 个答案:

答案 0 :(得分:4)

这些数字对应于测试期间执行该行的次数。使用一个简单的例子:

public class MyClass {
    public void methodA(){
        System.out.println("Method a");
    }

    public void methodB(){
        System.out.println("Method b");
    }
}

通过一些测试:

public class MyClassTest {

    @Test
    public void testMethodA(){
        final MyClass x = new MyClass();
        x.methodA();
    }

    @Test
    public void testMethodB(){
        final MyClass x = new MyClass();
        x.methodB();
    }
}

我将得到以下报告,显示我构建了两次测试对象,并运行了一次方法: Non ignored test case

如果我在@Ignore上添加testMethodB注释,则会生成以下报告,显示我只构建了一次类,​​并且在测试时没有在methodB内执行行: enter image description here

颜色与覆盖范围相关联。当没有覆盖该行或分支的测试时,它将显示为红色。

修改 - 关于您在评论中的问题,由于未检查所有条件,可能会丢失保险范围。例如,请考虑以下方法:

public void methodB(final boolean testOne, final boolean testTwo){
    if(testOne || testTwo){
        System.out.println("Method b");
    }
    System.out.println("Done");
}

和这个测试:

@Test
    public void testMethodB(){
        final MyClass x = new MyClass();
        x.methodB(true, false);
        x.methodB(true, true);
    }

您最终会得到以下测试报告。这样做的原因是因为虽然你在测试中确实执行了这一行(实际上是2次),但我没有测试条件的所有排列,因此,报告将显示我缺少覆盖范围。

conditional coverage