2015-02-02 3 views
0

는 다음 코드를 살펴 보자 : 나는 if (Math.abs(smu) <= 0.01)로 라인과 첫 번째 테스트에 대한 boolean expectedResult = true;으로 테스트 클래스를 변경하면분기 혜택 및 회선 적용률이 왜 떨어 집니까?

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

는 다음 받는다는가 벌금을 축적 :

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

이는 방법이다. 당신이 테스트중인 방법에 0.01를 사용하는 경우 [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%

답변

0

, 당신의 시험 방법의 두 부분 (귀국일 문) 운동 : 나는 위의 코드를 빌드 할 때 그러나 받는다는는 오류가 발생합니다. 그래서 100 % 커버리지를 얻습니다.

테스트중인 메서드에서 0.00을 사용하면 두 테스트 모두 "false"종료 만 수행합니다. "반환 허위"의 범위는 없습니다. 성명서. 그래서 당신은 100 % 커버리지를 얻지 못합니다.

+0

그래, 나는 그렇게 생각했다. 그래서'pom.xml'에서 라인 커버리지 속도와 분기 커버리지 비율을 줄일 수 있을까요? – NewBie

관련 문제