【问题标题】:Why is my branch coverage rate and line coverage rate failing?为什么我的分支机构覆盖率和线路覆盖率失败?
【发布时间】:2015-02-02 04:29:29
【问题描述】:

考虑以下代码:

  @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) &lt;= 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%

【问题讨论】:

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


    【解决方案1】:

    当您在被测方法中使用 0.01 时,您的 两个 测试会执行该方法的两个部分(返回语句)。因此,您可以获得 100% 的覆盖率。

    当您在被测方法中使用 0.00 时,您的两个测试都只执行“假”退出。没有覆盖“return false”;陈述。所以你得到的覆盖率低于 100%。

    【讨论】:

    • 是的,我是这么认为的,所以我可以从pom.xml降低我的线路覆盖率和分支覆盖率
    猜你喜欢
    • 1970-01-01
    • 2012-01-11
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 2017-06-27
    • 2013-03-08
    • 1970-01-01
    相关资源
    最近更新 更多