올바른 방향을 찾고 있지만 문제를 다른 곳으로 옮기고 있지 않습니다. 코드베이스와 다른 테스트에서 누출되는 것을 방지하기 위해 격리되어 있습니다. 포장 된 행동에 대해 잘못된 가정을하거나 그러한 가정을 간과 한 적이없는 경우에만이 문제를 볼 수 있습니다. 몇 가지 테스트가 필요하지만 다양한 어려움이 있습니다. 이러한 가정을 테스트하기로 얼마나 멀리 선택 하느냐에 따라 필요한 트레이드 오프가 될 것입니다.
일부 시나리오의 경우 래퍼를 테스트 할 수 있지만 제어 할 수있는 물리적 종속성이 필요합니다. 예를 들어 파일을 수정하는 정적 메서드를 사용하려면 파일 시스템을 설정하는 데 시간이 걸리거나 웹 서버에서 파일을 다운로드하는 도우미 클래스가 필요합니다. 필자는 이러한 테스트를 "단위 테스트"대신 "통합 테스트"라고 생각하고 있습니다. 이러한 테스트는 해당 표준 테스트를 실행하는 데 시간이 더 오래 걸릴 수 있으므로이를 제거하고 빠른 단위 테스트보다 자주 실행하지 않는 것이 좋습니다.
다른 시나리오의 경우 상당한 노력없이 테스트를 작성할 수 없습니다. 예를 들어, 별도의 창에 대화 상자를 표시하는 논리를 래핑했을 수 있습니다. 코드에서이 논리를 테스트하는 것은 많은 작업이 될 수 있지만 응용 프로그램을 실행하고 작동하는지 확인하는 것으로 충분할 수 있습니다. 당신은 코드 커버리지에 대한 히트를 치르지 만 나에게 이것은 받아 들일 수있는 트레이드 오프이다.
중요한 문제는 래핑 된 동작의 가정을 이해하는 것입니다. 예를 들어 웹 요청이 잘못되었거나 네트워크 연결이 끊어진 경우 원격 서버에서 어떤 유형의 예외가 발생합니까? 이러한 가정을 올바르게 포착하지 않으면 해당 오류가 코드의 다른 영역으로 바뀝니다.