0

Consider the following code:

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

This is the method:

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

When I change the line as if (Math.abs(smu) <= 0.01) and the test classes as boolean expectedResult = true; for the first test then the maven builds up fine. But when I try to build with above code, maven throws an error as: [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%

NewBie
  • 37
  • 12

1 Answers1

0

When you use 0.01 in the method under test, your two tests exercise both parts (return statements) of the method. So, you get 100% coverage.

When you use 0.00 in the method under test, both of your tests only exercise the "false" exit. There is no coverage of the "return false;" statement. So you get less than 100% coverage.

Ira Baxter
  • 93,541
  • 22
  • 172
  • 341
  • Yup, i thought so, So can I decrease my line coverage rate and branch coverage rate from `pom.xml` – NewBie Feb 02 '15 at 08:52