TDD를 중심으로 머리를 감싸려고합니다. 특히 개발 부분입니다. 몇 가지 책을 보았지만 주로 찾은 책은 주로 테스트 부분-NUnit의 역사, 테스트가 좋은 이유, 빨강 / 녹색 / 리 팩터 및 문자열 계산기를 만드는 방법을 다룹니다.
좋은 점이지만 TDD가 아니라 "단지"단위 테스트입니다. 특히, 테스트를 시작하기 위해 디자인이 필요한 경우 TDD가 어떻게 좋은 디자인을 얻는 지 이해하지 못합니다.
설명하기 위해 다음 세 가지 요구 사항을 상상해보십시오.
- 카탈로그에는 제품 목록이 있어야합니다.
- 카탈로그는 사용자가 본 제품을 기억해야합니다
- 사용자는 제품을 검색 할 수 있어야합니다
이 시점에서 많은 책들이 마술 토끼를 모자에서 꺼내어 "Testing the ProductService"로 뛰어 들지만, 처음에는 ProductService가 있다는 결론을 내린 방법에 대해서는 설명하지 않습니다. 그것이 제가 이해하려고하는 TDD의 "개발"부분입니다.
기존 디자인이 필요하지만 엔터티 서비스 외부의 항목 (즉, 제품이 있으므로 ProductService가 있어야 함)을 찾을 수 없습니다 (예 : 두 번째 요구 사항을 충족하려면 사용자, 그러나 어디에서 상기 기능을 상기시킬 것인가? 검색은 ProductService의 기능입니까 아니면 별도의 SearchService입니까? 어떻게 선택해야하는지 어떻게 알 수 있습니까?)
SOLID 에 따르면 UserService가 필요하지만 TDD가없는 시스템을 설계하면 수많은 단일 메소드 서비스가 생길 수 있습니다. TDD가 처음에 내 디자인을 발견하게하려는 것이 아닙니까?
저는 .net 개발자이지만 Java 리소스도 작동합니다. 실제 업무용 응용 프로그램을 다루는 실제 샘플 응용 프로그램이나 책이없는 것 같습니다. 누군가가 TDD를 사용하여 디자인을 만드는 과정을 보여주는 명확한 예를 제공 할 수 있습니까?