9

PowerMockito と Mockito を使用して、いくつかの静的クラスをモックしています。特定のモック オブジェクトが実行時に呼び出される回数を取得して、その回数を別のモック オブジェクトの検証時間に使用できるようにしたいと考えています。

テストしているメソッドがスレッドを開始し、1秒後にスレッドを停止するため、これが必要です。私のモックは、この 1 秒間に数回呼び出されます。最初のモックが呼び出された後、コード ブランチとさまざまなモックを呼び出すことができます。それで、最初のモックの数と他のモックの数を比較したいと思います。

これはレガシー コードです。したがって、実際のコードを変更することはできません。テストコードしか変更できません。

4

1 に答える 1

11

Mockito は、特定のモックの呼び出し回数を確認する機能を既に提供しているため、より簡単な解決策があるかもしれませんが、Mockito.verify()そのカウントを返す方法が見つからないため、回答を使用して独自のカウンターを実装できます。

MyClass myObject = mock(MyClass.class);
final int counter = 0;

when(myObject.myMethod()).then(new Answer<Result>() {
    @Override
    public Result answer(InvocationOnMock invocation) throws Throwable {
        counter++;
        return result;
    }
}); 

このソリューションの問題は、モックするすべてのメソッドに対して上記を記述する必要があることです。


モッキート 1.10+:

実際にバージョンの API を調べたところ、次の1.10ことがわかりました。

Mockito.mockingDetails(mock).getInvocations();
于 2015-04-02T01:32:27.157 に答える