28

タイトルのとおり、メソッドが存続期間中に呼び出されなかったかどうかをテストするための easymock のメカニズムがあるかどうか疑問に思っています。

4

4 に答える 4

27

この質問は非常に古いことは知っていますが、OPと同じ質問があり、さらに調べました。次の解決策を見つけました。

.andThrow(new AssertionFailedError()).anyTimes();EasyMock 宣言の最後に追加すると、モックされたメソッドが呼び出されたときにテストが失敗します。

これが単純に NiceMock を使用せず、モックされていないメソッド呼び出しのためにテストを失敗させるよりも優れている理由は、これにより、特定のシナリオで XYZ メソッドが呼び出されなかったことを具体的にテストできるためです。

この回答について、David Wallace の功績を認めたいと思います。次の投稿での彼の回答でこの解決策を見つけました:EasyMockでvoidメソッドが呼び出されなかったことをテストしてください

于 2016-06-08T12:22:25.237 に答える
16

EasyMock のドキュメントから:

素敵なモックス

mock() によって返されるモック オブジェクトでは、すべてのメソッドのデフォルトの動作は、すべての予期しないメソッド呼び出しに対して AssertionError をスローすることです。デフォルトですべてのメソッド呼び出しを許可し、適切な空の値 (0、null、または false) を返す「適切な」モック オブジェクトが必要な場合は、代わりに niceMock() を使用します。

したがって、あなたが求めているのはデフォルトの動作です。

于 2009-12-29T02:11:04.663 に答える
13

デフォルトでは、Easymock は、期待値を明示的に設定していないメソッドが呼び出された場合に例外をスローします。

于 2009-12-29T02:10:39.893 に答える