로직을 올바르게 구현 한 후에도 테스트에 여전히 실패한 경우 (테스트에 실수가 있기 때문에) TDD에서 가장 좋은 조치는 무엇입니까?
예를 들어, 다음 기능을 개발하려고한다고 가정하십시오.
int add(int a, int b) {
return a + b;
}
다음 단계에서 개발한다고 가정하십시오.
쓰기 테스트 (아직 기능 없음) :
// test1 Assert.assertEquals(5, add(2, 3));
컴파일 오류가 발생합니다.
더미 함수 구현을 작성하십시오.
int add(int a, int b) { return 5; }
결과 :
test1
합격.다른 테스트 사례를 추가하십시오.
// test2 -- notice the wrong expected value (should be 11)! Assert.assertEquals(12, add(5, 6));
결과 :
test2
실패,test1
여전히 통과합니다.실제 구현 작성 :
int add(int a, int b) { return a + b; }
결과 :
test1
여전히 통과test2
하고 실패합니다 (이후부터11 != 12
).
이 특별한 경우에 :
- 수정
test2
하고 이제 통과하는지 확인하십시오. 또는 - 구현의 새 부분을 삭제하고 (즉, 위의 2 단계로 돌아가) 수정
test2
하고 실패한 다음 올바른 구현을 다시 소개하십시오 (위의 4 단계).
아니면 다른 영리한 방법이 있습니까?
예제 문제가 다소 사소한 것으로 이해하지만 일반적인 경우에 수행해야 할 작업에 관심이 있습니다. 두 숫자를 더하는 것보다 더 복잡 할 수 있습니다.
편집 (@Thomas Junk의 답변에 대한 답변) :
이 질문의 초점은 그러한 경우 TDD가 제안하는 것이지, 좋은 코드 나 테스트 (TDD-way와 다를 수 있음)를 달성하기위한 "범용 모범 사례"가 아닙니다.