2017-03-07 3 views
0

내 JUnit 테스트 케이스에서 EclEmma를 실행하여 일부 테스트에서 100 %에 도달했습니다. 그러나 82 % 또는 95 % 덮여있는 코드에는 "2 개의 분기 중 1 개를 놓친 것"이라는 메시지가 표시되며이 문제를 해결할 수 없습니다.JUnit 테스트 : 분기가 누락되지 않은 문을 테스트하는 방법?

수업을 살펴본 결과,이 메시지는 if-statement 옆에만 나타 났고, 이것이 내 테스트를 100 % 덮지 못하게합니다.

JUnit에서 if 문을 테스트하는 방법을 아는 사람이 있는지 묻는 것 같아서 분기를 놓치지 마십시오.

private double height; 
    public void setHeight(double height){ 
     if(height <=0){ 
      this.height = 0; 
     } 
     else{ 
      this.height = height; 
     } 
    }//method close 

(내가 사용의 JUnit 4) 단일

+3

'setHeight'를 음수, 양수 및 어쩌면 0으로 호출하십시오. 실제로 정확히 무엇을 요구하고 있습니까? ? – Seelenvirtuose

+0

따라서, 높이가 0보다 큰지 테스트하고 높이가 0보다 큰지 테스트하십시오. 두 가지를 모두 포함합니다. –

+0

btw : ==와 double을 비교하는 것이 Java (및 다른 언어)에서는 안전하지 않습니다. http://stackoverflow.com/questions/25160375/comparing-double-values-for-equality-in-java – Rainer

답변

3

:

내가 시험에 노력하고있어 코드는 하나의 별개의 테스트 케이스를 가지고을 원하는

테스트중인 메서드 내에서 경로 당; 같은

  • testSetHeightWithNegativeValue()
  • testSetHeightWithZeroValue()
  • testSetHeightWithPositiveValue

그들 각각의 예상 출력 시험 및 검사 방법 하에서의 특정 입력을 제공한다.

여기서 실제 걸릴 곳은 다음과 같습니다. 코드에 대해으로 생각하십시오. 당신은 당신의 방법에 대해 더 많은 테스트가 필요하다는 것을 나타 내기 위해 커버리지 툴을 필요로하지 않아야한다. 대신 : 당신은 당신의 방법을보고, 그리고 생각하고 뭐하는거야; 테스트 케이스를 작성합니다.

적용 범위는 입니다. 올바른 것을 한 것은입니다. 그러나 "옳은 일을하는 것"은 혼자서해야 할 일입니다. 몇몇 숫자를 만나지 않기 위하여.

그리고, 코멘트는 지적으로 다음 TDD 방법 사용을 고려 : 당신이 당신의 테스트를 쓸 때
전에 프로덕션 코드의 "일치"작품을 만들 수는, 당신은 일부에게의 필수 요소를 "생각"있는지 확인하여 작업 절차. 당신이 할 수있는,

height <= 0

public void setHeight(double height){ 
    this.height = 0; 
} 

height > 0

public void setHeight(double height){ 
    this.height = height; 
} 

그래서 if 문의 :

+0

음, TDD를 고려하기 전에 테스트 케이스를 작성하기 전에 메소드를 작성해야합니다 (http://stackoverflow.com/questions/804569)./왜 사용해야할까요? 테스트 중심 개발) – Rainer

+0

테스트를 다시 실행하고 100 % 적용 범위를 얻었습니다. 당신의 도움을 주셔서 감사합니다! – user1975

+0

@Rainer TDD에 대해 생각했지만 그 점을 잊어 버렸습니다. 방금 내 대답을 업데이 트했습니다. – GhostCat

1

귀하의 코드

public void setHeight(double height){ 
    if(height <=0){ 
     this.height = 0; 
    } 
    else{ 
     this.height = height; 
    } 
} 

는 두 가지 지점이있다 else에서 하나의 진술이나 다른 문으로 이동하십시오.가능한 모든 방법을 다루기 위해 두 개의 단위 테스트를 작성해야합니다. 하나는 매개 변수에 height > 0을 전달하고 다른 하나는 height <= 0에 대해

관련 문제