제품 그룹에서는 단위 테스트에서 50-70 %의 코드 범위를, 단위 테스트 및 테스트 자동화에서 90 % 이상의 범위를 목표로합니다. 단위 테스트 작성에 소요되는 일반적인 시간은 3-4 일의 헤드 다운 코딩이 필요한 모든 기능에 대해 약 1 일입니다. 그러나 그것은 많은 요인에 따라 달라질 수 있습니다.
99 % 코드 범위가 훌륭합니다. 단위 테스트는 훌륭합니다. 그러나 단위 테스트만으로 99 % 코드 적용 범위는? 단위 테스트 만으로도 많은 정보를 얻을 수 있다고 믿기가 어렵 습니다.
구현하는 데 하루가 걸리는 클래스에 대한 테스트를 작성하는 데 3 일을 소비 한 경우. 왜 이렇게 오래 걸렸거나 코드를 공유하는 이유에 대해 자세히 설명하지 않았습니다. 추측에서, 당신은 실제로 클래스에 대한 실제 단위 테스트를 작성하는 것이 아니라 실제로 테스트 자동화를 작성하고 있다고 추측합니다 . 그리고 두 가지 유형의 테스트 간의 차이점을 인식하는 한 실제로 아무런 문제가 없습니다.
그러나 3 일간의 시험 작문은 단일 수업만을위한 것이라고합니다. 아마도 클래스 자체는 단위 테스트를 위해 설계되지 않았을 것입니다. 클래스가 UI를 구현합니까? 네트워킹? 파일 I / O? 그렇다면 런타임과 상호 작용하는 비즈니스 로직보다 Java 런타임을 테스트하기 위해 더 많은 코드를 작성했을 수 있습니다.
TDD는 인터페이스와 인터페이스에 대한 의존성을 고려합니다. 단일 기능에 대해 UI, 네트워킹 및 파일 / IO를 구현하는 단일 클래스는 네트워킹, 파일 / IO 및 UI를 모델 뷰어 컨트롤러 디자인으로 분류 한 여러 클래스로 나눌 수 있습니다. 그런 다음 종속성에 대한 간단한 모의 객체를 사용하여 각각에 대해 적절한 테스트를 구현할 수 있습니다. 물론이 모든 것이 더 많은 시간이 걸립니다. 따라서 코딩하는 데 1 일, 테스트를 작성하는 데 3 일이 아닌이 유형의 디자인에는 3 일의 코딩과 1 일의 쓰기 테스트가 필요할 수 있습니다. 그러나 코드의 유지 관리 및 재사용 성이 훨씬 향상됩니다.