ホームページ >Java >&#&チュートリアル >Mockito と PowerMock を使用して Java でオブジェクトを返す特定の静的メソッドをモックする方法
特定の静的メソッドをモックしてオブジェクトを返す
Mockito と PowerMock は、静的メソッドをモックするための強力なサポートを提供します。ただし、単一の静的メソッドをモックしてオブジェクトを返すようにするのは難しい場合があります。
不一致と呼び出しの問題を回避する
オブジェクトの場合、戻り値の型の不一致を避けることが重要です。デフォルトの戦略 (オブジェクト値メソッドに対して null を返すなど) ですべての静的メソッドをモックすると、エラーが発生する可能性があります。
PowerMockito.mockStatic(Static.class, new Answer
静的モッキングとターゲット固有のメソッドを有効にする
解決策は、静的メソッドのモックとターゲットを絞ったメソッドの概念を組み合わせることですスタブ加工。 PowerMockito.mockStatic ではクラスの静的モックが有効になり、when-thenReturn 構文では特定のメソッドをスタブできます。
PowerMockito.mockStatic(Static.class);
when(Static.m1(param1, param2) ).thenReturn(1000l);
このアプローチにより、静的Static.class のすべてのメソッドをモックしますが、デフォルトのスタブ戦略をオーバーライドしません。 when-thenReturn を使用すると、m1 メソッドを明示的にスタブして 1000l を返します。
MockStatic オーバーロードを検討する
PowerMockito は、mockStatic 用に 2 つのオーバーロードを提供します。 1 引数のオーバーロード (mockStatic(Static.class)) を使用すると、デフォルトの戦略なしで静的モックが有効になります。 2 つの引数のオーバーロード (mockStatic(Static.class, Answer
特定のテスト シナリオに応じて、次のいずれかを使用することを選択できます。これらの過負荷の。特定のメソッドのみをモックしたい場合、またはさまざまなメソッド呼び出しに対して複数の戻り値を設定したい場合は、1 引数のオーバーロードがより適切です。
以上がMockito と PowerMock を使用して Java でオブジェクトを返す特定の静的メソッドをモックする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。