我正在使用 PowerMockito。我想测试以下代码。
class Foo{
void outerVoid(){
innerVoid(); // method of another class
}
}
如何在不调用 innerVoid() 的情况下测试 OuterVoid()?
innerVoid() 包含与数据库相关的对象,因此不应调用它,否则它将成为集成测试。
我正在使用 PowerMockito。我想测试以下代码。
class Foo{
void outerVoid(){
innerVoid(); // method of another class
}
}
如何在不调用 innerVoid() 的情况下测试 OuterVoid()?
innerVoid() 包含与数据库相关的对象,因此不应调用它,否则它将成为集成测试。
如果可能的话,首先重构你的代码。
创建一个界面Bar
。
interface Bar {
void innerVoid();
}
现在使用设计模式依赖注入将这个接口的实现和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 ...