2011-09-29 3 views
2

Apache Commons IO의 FileUtils 클래스를 사용하여 디렉토리를 복사하는 클래스 'a'가 있습니다.Apache Commons IO에 종속성 주입 사용

클래스 'a'에 대한 단위 테스트를 작성해야하기 때문에 모든 종속성을 주입하여 테스트에서 조롱 할 수 있어야합니다.

그러나 FileUtils 클래스 삽입 방법은 무엇입니까? 인터페이스가 없으며 모든 메소드가 추상적입니다.

답변

6

유틸리티 클래스의 모든 메소드는 정적입니다. 당신은 그들을 조롱 할 수 없습니다 (글쎄, 바이트 코드 조작으로 할 수는 있지만,보기 흉합니다). 이를 처리하는 적절한 방법은 이러한 유틸리티에 대한 추상화를 제공하는 것입니다. 예를 들어, 빈으로 선언하고 삽입하는 FileService을 구현하십시오. 그런 다음 메소드를 조롱 할 수 있습니다.

+0

바이트 코드 조작 또는 클래스 로더의 클래스 교체를 통해 정적 메서드를 모방하는 것이 가능합니다 (http://code.google.com/p/powermock/ – bbaja42

+0

@ bbaja42). 그러나 그것은 적어도 추한 것입니다 :) 나는 내 대답에 대한 설명을 추가했습니다 – Bozho

+0

나는 그것이 추한 것에 동의하지만, 또한 꽤 유용합니다. 그러나이 경우 귀하의 솔루션을 선호합니다. – bbaja42

2

확장하여 직접 FileUtils를 구현하거나 jMockit 또는 EasyMock과 같은 조롱 라이브러리를 사용할 수 있습니다.

+0

http://code.google.com/p/mockito/를 목록에 추가하십시오. – Matt

+0

정적 방법을 모의 해줄 수 있습니까? – Bozho

1

언제든지 파일 처리 레이어로 래핑하고 단위 테스트를위한 스텁 구현을 만들 수 있습니다.