우리는 시스템을 테스트 할 수 있고 대부분 TDD를 사용하여 개발하도록 시스템을 설계하려고합니다. 현재 우리는 다음과 같은 문제를 해결하려고 노력하고 있습니다.
여러 곳에서 ImageIO 및 URLEncoder (표준 Java API)와 같은 정적 헬퍼 메소드와 대부분 정적 메소드 (Apache Commons 라이브러리와 같은)로 구성된 다양한 라이브러리를 사용해야합니다. 그러나 이러한 정적 도우미 클래스를 사용하는 메서드를 테스트하는 것은 매우 어렵습니다.
이 문제를 해결하기위한 몇 가지 아이디어가 있습니다.
- 정적 클래스 (예 : PowerMock)를 조롱 할 수있는 모의 프레임 워크를 사용하십시오. 이것은 가장 간단한 해결책 일지 모르지만 어떻게 든 포기하는 느낌입니다.
- 모든 정적 유틸리티 주위에 인스턴스화 가능한 랩퍼 클래스를 작성하여이를 사용하는 클래스에 삽입하십시오. 이것은 비교적 깨끗한 솔루션처럼 들리지만 결국 래퍼 클래스를 많이 만들지 않을까 걱정됩니다.
- 이 정적 헬퍼 클래스에 대한 모든 호출을 대체 할 수있는 함수로 추출하고 실제로 테스트하려는 클래스의 서브 클래스를 테스트하십시오.
그러나 나는 이것이 TDD를 할 때 많은 사람들이 직면 해야하는 문제 일 것이라고 생각합니다. 따라서이 문제에 대한 해결책이 이미 있어야합니다.
이러한 정적 도우미를 사용하는 클래스를 테스트 가능하게 유지하는 가장 좋은 전략은 무엇입니까?