我如何在Java(jUnit4)中轻松模拟出静态方法
如何在Java中轻松模拟静态方法?
我正在使用Spring 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()
如何在Java中做类似的事情?