25

テスト中のクラスでMockitoの他のクラスをモックするにはどうすればよいですか?

例えば:

MyClass.java

class MyClass {
    public boolean performAnything() {
        AnythingPerformerClass clazz = new AnythingPerformerClass();
        return clazz.doSomething();        
    }
}

AnythingPerformerClass.java

class AnythingPerformerClass {
    public boolean doSomething() {
        //very very complex logic
        return result;
    }
}

そしてテスト:

@Test
public void testPerformAnything() throws Exception {
    MyClass clazz = new MyClass();
    Assert.assertTrue(clazz.performAnything());
}

AnythingPerformerClassから不要なロジックを除外するためになりすますことはできますAnythingPerformerClassか? 単純な戻り値またはdoSomething()戻り値のメソッドをオーバーライドできますか?truefalse

Robolectric を使用した Android テストに必要なため、Mockito を指定する理由。

4

3 に答える 3

3

現在 (AnythingPerformerClassメソッド内の宣言とインスタンス化の両方) のように、 AnythingPerformerClassMockito のみを使用してモックすることはできません。

可能であれば、宣言とインスタンス化の両方AnythingPerformerClassをクラス レベルに移動します。型のインスタンス変数を宣言AnythingPerformerClassし、コンストラクターによってインスタンス化します。

そうすれば、AnythingPerformerClassテスト中にのモックをより簡単に挿入し、その動作を指定できます。例えば:

when(anythingPerformerClassMock.doSomething()).thenReturn(true);

またはエラー処理をテストするには:

when(anythingPerformerClassMock.doSomething()).thenTrow(new NullPointerException());
于 2013-07-19T09:58:48.773 に答える
0

Mockito で何を返すかを設定できます。

when(mock.method()).thenReturn(someValue)
于 2013-07-19T09:57:11.883 に答える