어떤 사람들은 TDD를 테스트 주도 개발 대신에 D를 Design이라고 해석해서 테스트 주도 설계라고 이해하고 설명하는 사람들도 있다. 만약에 TDD가 테스트 주도 설계로 해석이 된다면 TDD를 하면 자연스럽게 좋은 설계가 도출될 것 같은 느낌이 든다. 실제로 테스트 주도 개발과 코드 설계가 서로 어떤 영향을 미치는지 강의를 통해 알아보자.
설계가 단위 테스트에 미치는 영향
- 테스트는 인터페이스 설계에 의존한다.
- 인터페이스 설계 품질이 낮으면 테스트 작성이 불편하다.
단위 테스트가 설계에 미치는 영향
- 테스트가 있기 때문에 리팩터링 가능하다.
- 두려움 없이 구현 설계를 과감하게 개선한다.
단위 테스트에 의지하는 인터페이스 설계
단위 테스트는
- 낮은 응집에 대한 피드백을 주지 않는다.
- 일관된 설계를 강요하지 않는다.
- 의도 노출을 요구하지 않는다.
단위 테스트에 의지하는 구현 설계
- 단위 테스트는 책임 분산을 유도하지 않는다.
- Mockists
- 비공개 운영 코드 테스트