cobertura 报告中行号旁边的颜色和数字是什么

Tec*_*oob 5 testing junit code-coverage cobertura maven

我使用 mvn cobertura:cobertura 来生成这个 cobertura JUnit 测试覆盖率报告。谁能向我解释一下行号旁边的数字是什么意思?谢谢你。

在此处输入图片说明

Nic*_*zio 5

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

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

    public void methodB(){
        System.out.println("Method b");
    }
}
Run Code Online (Sandbox Code Playgroud)

通过一些测试:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

我将得到以下报告,显示我构建了我的测试对象两次,并且每个方法运行一次: 不可忽略的测试用例

如果我在 上添加@Ignore注释testMethodB,则会生成以下报告,显示我只构建了一次类,​​并且methodB在测试时没有执行其中的行: 在此处输入图片说明

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

编辑- 关于您在评论中的问题,由于未检查所有条件,可能会遗漏报道。例如,考虑这个方法:

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

和这个测试:

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

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

有条件保障