우선, TDD는 SOLID 코드를 작성 하도록 강요 하지 않습니다 . 원한다면 TDD를 수행하고 하나의 큰 혼란을 만들 수 있습니다.
물론, SOLID 원칙을 아는 것이 도움이됩니다. 그렇지 않으면 많은 문제에 대해 좋은 답변을 얻지 못하고 나쁜 테스트와 함께 잘못된 코드를 작성할 수 있기 때문입니다.
SOLID 원칙에 대해 이미 알고 있다면 TDD는 그 원칙에 대해 생각하고 적극적으로 사용하도록 권장합니다.
즉, 반드시 SOLID의 모든 문자를 다룰 필요는 없지만 , 적어도 부분적으로 SOLID 코드를 작성하도록 권장하고 장려합니다.
예를 들면 다음과 같습니다.
- 필요한 것을 조롱 할 수 있도록 분리 된 코드를 작성해야합니다. 이것은 의존성 역전 원리를 지원합니다 .
- 명확하고 짧은 테스트를 작성해야하므로 테스트에서 너무 많이 변경하지 않아도됩니다 (그렇지 않은 경우 큰 코드 노이즈 소스가 될 수 있음). 이는 단일 책임 원칙을 지원합니다 .
- 이 문제는 논쟁의 여지가 있지만 인터페이스 분리 원칙을 사용하면 "이 5 가지 방법을 조롱하지 않은 이유는 무엇입니까?" 더 중요한 것은, 어떤 방법을 조롱할지 결정할 때 선택의 여지가 없다는 것입니다. 테스트하기 전에 클래스의 전체 코드를 실제로 다루고 싶지 않고 시행 착오를 사용하여 작동 방식에 대한 기본적인 이해를 얻으려는 경우에 좋습니다.
Open / Closed 원칙을 준수 하면 일반적으로 테스트중인 클래스에서 파생 된 테스트 클래스의 외부 서비스 호출을 재정의 할 수 있으므로 코드 뒤에 작성된 테스트에 도움이 될 수 있습니다. TDD에서 나는 이것이 다른 원칙들만큼 필요하지 않다고 생각하지만, 오해 될 수 있습니다.
Liskov 대체 규칙을 준수하는 것은 동일한 정적 유형 인터페이스를 구현하는 경우 지원되지 않는 인스턴스를 받기 위해 클래스의 변경 사항을 최소화하려는 경우 유용하지만 적절한 테스트 사례에서는 발생하지 않을 수 있습니다. 일반적으로 테스트 대상 클래스의 종속성에 대한 실제 구현을 전달하지 않습니다.
가장 중요하게, SOLID 원칙은보다 깨끗하고 이해하기 쉽고 유지 보수가 쉬운 코드 작성을 장려하기 위해 만들어졌으며 TDD도 마찬가지였습니다. 따라서 TDD를 올바르게 수행하고 코드와 테스트의 모양에주의를 기울이면 (즉각적인 피드백, API 및 정확성을 현명하게 얻을 수 있기 때문에 어렵지 않습니다) 일반적으로 SOLID 원칙에 대해 걱정할 필요가 없습니다.