- 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지않는다
- 컴파일은 실패하지 않으면서 실행이 실패하는 정도만 단위 테스트를 작성한다
- 현재 실패하는 테스트를 통과할 정도만 실제 코드를 작성한다
실제 코드와 맞먹을 정도로 방대한 테스트 코드가 만들어지며 이는 관리 문제를 야기한다
- 명료성, 단순성, 풍부한 표현력이 필요하다 - 최소의 표현으로 많은 것을 나타내야 한다
- 잡다한(테스트에 필요 없는) 코드는 없애자
- BUILD-OPERATE-CHECK 패턴을 사용하자
- assert문이 하나면 결론이 하나라서 코드를 이해하기 쉽고 빠르다
- 여러 개라면 쪼개서 하나씩으로 바꾸면 된다
- 테스트 코드 속에 감춰진 일반적인 규칙이 보인다
- 테스트 함수마다 한 개념만 테스트하라
- assert문을 최소로 쓰라는 것이다
-
Fast: 테스트가 느리면 자주 돌리지 않게 됨 → 초반에 문제를 고치지 못함
-
Independent: 의존하게 되면 연쇄 효과가 발생하게 됨 → 원인을 진단하기 어려움
-
Repeatable: 어떠한 환경에서도 반복 가능해야 함 → 같은 결과를 도출
-
Self-Validating: Bool 값으로 결과를 도출해야함. 그렇지 않으면 판단은 주관적이 되며, 수작업으로 결과를 평가해야함
-
Timely: TDD 법칙을 따라야 한다 → 실제 코드를 구현하기 전에 테스트 코드를 작성해야한다