0

次のコードを検討してください。

  @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;
}

行を as に変更し、最初のテストの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%

4

1 に答える 1

0

テスト対象のメソッドで 0.01 を使用すると、2 つのテストでメソッドの両方の部分 (return ステートメント) が実行されます。したがって、100% のカバレッジが得られます。

テスト対象のメソッドで 0.00 を使用すると、両方のテストで「偽」の終了のみが実行されます。「return false;」についてはカバーされていません。声明。したがって、100% 未満のカバレッジが得られます。

于 2015-02-02T08:37:40.693 に答える