我正在使用PowerMockito。我想测试以下代码。
class Foo{
void outerVoid(){
innerVoid(); // method of another class
}
}
如何在不调用innerVoid()的情况下测试OuterVoid()?
innerVoid()包含与数据库相关的对象,因此不应该调用它,否则它将成为集成测试。
答案 0 :(得分:2)
首先重构代码,如果可能的话。
创建界面Bar
。
interface Bar {
void innerVoid();
}
现在使用设计模式Dependency Injection将此接口的实现与innerVoid()
方法一起注入Foo
类。
class Foo {
Bar bar;
Bar getBar() {
return this.bar;
}
void setBar(Bar bar) {
this.bar = bar;
}
void outerVoid() {
this.bar.innerVoid();
}
}
现在,您可以随意模拟Bar
课程。
Bar mockBar = createMockBar(...); // create a mock implementation of Bar
Foo foo = new Foo();
foo.setBar(mockBar);
... continue testing ...