Apache Commons IO의 FileUtils 클래스를 사용하여 디렉토리를 복사하는 클래스 'a'가 있습니다.Apache Commons IO에 종속성 주입 사용
클래스 'a'에 대한 단위 테스트를 작성해야하기 때문에 모든 종속성을 주입하여 테스트에서 조롱 할 수 있어야합니다.
그러나 FileUtils 클래스 삽입 방법은 무엇입니까? 인터페이스가 없으며 모든 메소드가 추상적입니다.
Apache Commons IO의 FileUtils 클래스를 사용하여 디렉토리를 복사하는 클래스 'a'가 있습니다.Apache Commons IO에 종속성 주입 사용
클래스 'a'에 대한 단위 테스트를 작성해야하기 때문에 모든 종속성을 주입하여 테스트에서 조롱 할 수 있어야합니다.
그러나 FileUtils 클래스 삽입 방법은 무엇입니까? 인터페이스가 없으며 모든 메소드가 추상적입니다.
유틸리티 클래스의 모든 메소드는 정적입니다. 당신은 그들을 조롱 할 수 없습니다 (글쎄, 바이트 코드 조작으로 할 수는 있지만,보기 흉합니다). 이를 처리하는 적절한 방법은 이러한 유틸리티에 대한 추상화를 제공하는 것입니다. 예를 들어, 빈으로 선언하고 삽입하는 FileService
을 구현하십시오. 그런 다음 의 메소드를 조롱 할 수 있습니다.
언제든지 파일 처리 레이어로 래핑하고 단위 테스트를위한 스텁 구현을 만들 수 있습니다.
바이트 코드 조작 또는 클래스 로더의 클래스 교체를 통해 정적 메서드를 모방하는 것이 가능합니다 (http://code.google.com/p/powermock/ – bbaja42
@ bbaja42). 그러나 그것은 적어도 추한 것입니다 :) 나는 내 대답에 대한 설명을 추가했습니다 – Bozho
나는 그것이 추한 것에 동의하지만, 또한 꽤 유용합니다. 그러나이 경우 귀하의 솔루션을 선호합니다. – bbaja42