흥미로운 질문이며 대답은 생각보다 쉽습니다.
간단히 말해 가정을 검증하는 테스트를 작성하십시오. 구현 또는 동료 프로그래머를 수행하는 것은 중요하지 않습니다.
긴 대답입니다.
를 나열하는 옵션 중 하나는 다소 수동적하고 필요 하면 (어떤이있는 경우) 조만간 다시 와서 코드를 다시 방문 할 수 있습니다.
- 구현을 담당하는 상대방이 의견 을 읽고 처리해야합니다. 그 동안 코드를 컴파일 할 수 없습니다. 코드 저장소에서 이러한 상태를 확인하면 지속적인 통합 파이프 라인이 작동하지 않으며 어쨌든 나쁜 습관입니다 ... 깨진 코드를 체크인하지 마십시오
- 런타임 예외 는 더 좋아 보이지만 동료 프로그래머는 구현이 검사하지 않고 이미 완료되었다고 가정하여 시스템을 불안정한 상태로 유지할 수 있기 때문에 여전히 유독합니다. 메소드가 그렇게 자주 트리거되지 않으면 프로덕션 코드가 손상 될 수 있습니다 ... 나쁜 습관뿐만 아니라 ... "구현되지 않은"예외는 확인하지 마십시오.
- 동료 프로그래머 가 메소드 또는 스텁을 구현 하기를 기다리는 것도 어렵습니다. 동료 프로그래머의 워크 플로와 워크 플로가 중단됩니다. 그들이 아프거나, 회의 시간에, 커피 브레이크에서, 당신이 기다리는 시간을 보내고 싶습니까? ... 필요하지 않은 사람을 기다리지 마십시오
- 누락 된 메소드를 구현하는 가장 좋은 방법입니다. 그러나 구현이 전체 사용 사례를 만족시키지 않고 동료 프로그래머가이를 수정하거나 변경해야하는 경우 어떻게됩니까? 귀하와 귀하의 의도와 여전히 호환되는지 어떻게 확인합니까? 대답은 다시 쉽습니다. 의도를 확인, 설명 및 문서화하는 테스트를 작성하십시오. 테스트가 중단되면 쉽게 알 수 있습니다. 해당 방법을 변경하여 기능을 중단해야하는 경우 즉시 표시됩니다. 둘 다 의사 소통해야 할 이유가 있으며 무엇을해야할지 결정해야합니다. 기능을 나누시겠습니까? 구현 변경 등 ... 테스트로 충분히 문서화되지 않은 코드를 체크인하지 마십시오.
충분한 수준의 테스트를 달성하려면 두 가지 원칙을 살펴 보는 것이 좋습니다.
TDD-테스트 중심 개발-이를 통해 의도를 설명하고 충분히 테스트 할 수 있습니다. 또한 아직 구현되지 않은 메소드와 클래스 (인터페이스를 사용하여)를 조롱하거나 위조 할 수도 있습니다. 코드와 테스트는 여전히 컴파일되어 동료 프로그래머의 코드와 별도로 자신의 코드를 테스트 할 수 있습니다. ( https://en.wikipedia.org/wiki/Test-driven_development 참조 )
ATDD-승인 테스트 중심 개발-기능 전체를 테스트하는 데 도움이되는 외부 루프 (TDD 루프 주변)를 만듭니다. 이 테스트는 전체 기능이 구현 된 경우에만 녹색으로 바뀌므로 동료가 작업을 완료하면 자동으로 표시됩니다. 당신이 나에게 묻는다면 아주 깔끔합니다.
주의 사항 : 귀하의 경우, 간단한 수락 테스트 만 작성하고 너무 많은 비즈니스 측면을 도입하려고 시도하지는 않습니다. 기능에 필요한 시스템의 모든 부분을 통합하는 간단한 통합 테스트를 작성하십시오. 그게 다야
이를 통해 코드를 Continous Integration 파이프 라인에 넣고 매우 안정적인 구현을 생성 할 수 있습니다.
해당 주제를 더 자세히 보려면 다음 링크를 확인하십시오.