어떻게 Java에서 정적 메서드를 쉽게 조롱합니까?Java (jUnit4)에서 정적 메서드를 쉽게 조롱 할 수 있습니다
나는 내가 리팩터링 더 단위 테스트 할 수 없습니다 내 서비스를 호출 할 필요가 정적 방법을 제어하지 않는 스프링 2.5의 JUnit 4.4
@Service
public class SomeServiceImpl implements SomeService {
public Object doSomething() {
Logger.getLogger(this.class); //a static method invoked.
// ...
}
}
을 사용하고 있습니다. 예를 들어 Log4J Logger을 사용했지만 실제 정적 메서드는 비슷합니다. 정적 방법을 변경하는 옵션이 아닙니다. 나는 자바에서 비슷한 일을 어떻게
def mockedControl = mockFor(Logger)
mockControl.demand.static.getLogger{Class clazz-> … }
…
mockControl.verify()
:
Grails의 작업을하고, 내가 좋아하는 뭔가를 사용하여 사용 해요?
SomeServiceImpl 구현을 변경할 수 있습니까? –
신경 쓰지 마라, Jon Skeet이 방금 내가 생각한 것을 게시했다. 자랑스러워! (Jon Skeet hehe와 같은 생각) –
예 SomeServiceImpl을 변경할 수는 있지만 왜해야합니까? 여분의 간접 참조가 필요한 이유는 무엇입니까? –