1

私はPowerMockitoを使用しています。次のコードをテストしたいと思います。

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

innerVoid() を呼び出さずに OuterVoid() をテストするにはどうすればよいですか?

innerVoid() にはデータベース関連のオブジェクトが含まれているため、呼び出さないでください。そうしないと、統合テストになります。

4

1 に答える 1

2

可能であれば、コードのリファクタリングから始めます。

インターフェイスを作成しますBar

interface Bar {
    void innerVoid();
}

ここで、デザイン パターンDependency InjectioninnerVoid()を使用して、メソッドを使用してこのインターフェイスの実装を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 に答える