为什么我的分支覆盖率和线路覆盖率失败?

时间:2015-02-02 04:29:29

标签: java maven testing test-coverage maven-cobertura-plugin

请考虑以下代码:

  @Test
    public final void testIsUnitInvalidSadCase() {
    boolean expectedResult = false;
    boolean actualResult = false;
    double invalidUnit = 0.0;

    testFuelUnitValidator =
        new FuelUnitValidator(
            defaultTimestamp,
            defaultFluids,
            invalidUnit);

    actualResult = testFuelUnitValidator.isUnitInvalid();

    assertThat(actualResult, is(equalTo(expectedResult)));
}

@Test
public final void testIsUnitInvalidHappyCase() {
    boolean expectedResult = false;
    boolean actualResult = true;
    double invalidUnit = 0.02;

    testFuelUnitValidator =
        new FuelUnitValidator(
            defaultTimestamp,
            defaultFluids,
            invalidUnit);

    actualResult = testFuelUnitValidator.isUnitInvalid();

    assertThat(actualResult, is(equalTo(expectedResult)));
}

这是方法:

public boolean isUnitInvalid() {
    if (Math.abs(unit) < 0.0) {
        return true;
    }
    return false;
}

当我将行更改为if (Math.abs(smu) <= 0.01)并将测试类更改为boolean expectedResult = true;进行第一次测试时,maven会很好地构建。但是当我尝试用上面的代码构建时,maven会抛出一个错误: [ERROR] *className failed check. Branch coverage rate of 95.8% is below 100.0% *className failed check. Line coverage rate of 97.8% is below 100.0%

1 个答案:

答案 0 :(得分:0)

当您在测试方法中使用0.01时,两个测试会运用该方法的两个部分(返回语句)。所以,你得到100%的报道。

当您在测试方法中使用0.00时,两个测试仅执行“false”退出。没有报道“返回虚假”;声明。所以你得到的覆盖率低于100%。