1

我正在使用 PowerMockito。我想测试以下代码。

class Foo{
    void outerVoid(){
        innerVoid(); // method of another class
    }
}

如何在不调用 innerVoid() 的情况下测试 OuterVoid()?

innerVoid() 包含与数据库相关的对象,因此不应调用它,否则它将成为集成测试。

4

1 回答 1

2

如果可能的话,首先重构你的代码。

创建一个界面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 ...
于 2013-05-30T19:47:24.330 回答