如何测试包含void方法的Void方法?

时间:2013-05-30 13:59:13

标签: java unit-testing powermock

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

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

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

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

1 个答案:

答案 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 ...