PowerMock と Mockito を使用してテスト用のプライベート メソッドをモックする方法
PowerMock を使用したテストのためのプライベート メソッドのモック
プライベート メソッドを使用したクラスのテストは、特にメソッドの正しい動作を想定しようとする場合に困難になることがあります。 。 PowerMock はこれに対する解決策を提供しますが、一部のユーザーにとっては期待どおりに機能しない可能性があります。ここでは、Mockito と PowerMock を組み合わせてプライベート メソッドを正常にモックするための可能なアプローチを検討します。
アプローチ:
使用する主なツールは次のとおりです。 Mockito の when メソッドは、プライベート メソッドの動作を指定します。プライベート メソッドにアクセスするには、PowerMock の Spy 機能を利用します。これにより、プライベート メソッドへの呼び出しをインターセプトするスパイ オブジェクトを作成し、その動作を模擬できるようになります。
例:
次のクラス CodeWithPrivateMethod について考えてみましょう。プライベートメソッドがあるdoTheGamble.
<code class="java">public class CodeWithPrivateMethod { public void meaningfulPublicApi() { if (doTheGamble("Whatever", 1 << 3)) { throw new RuntimeException("boom"); } } private boolean doTheGamble(String whatever, int binary) { Random random = new Random(System.nanoTime()); boolean gamble = random.nextBoolean(); return gamble; } }</code>
テスト:
ここで説明したアプローチを使用すると、プライベート メソッドをモックし、目的の動作をアサートする JUnit テストを作成できます。
<code class="java">import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.powermock.api.mockito.PowerMockito.when; import static org.powermock.api.support.membermodification.MemberMatcher.method; @RunWith(PowerMockRunner.class) @PrepareForTest(CodeWithPrivateMethod.class) public class CodeWithPrivateMethodTest { @Test(expected = RuntimeException.class) public void when_gambling_is_true_then_always_explode() { CodeWithPrivateMethod spy = PowerMockito.spy(new CodeWithPrivateMethod()); when(spy, method(CodeWithPrivateMethod.class, "doTheGamble", String.class, int.class)) .withArguments(anyString(), anyInt()) .thenReturn(true); spy.meaningfulPublicApi(); } }</code>
このテストでは、スパイ オブジェクト spy を作成し、次を使用して doTheGamble メソッドをモックします。 いつ。あらゆる入力に対して、メソッドが常に true を返すように指定します。その結果、meansivePublicApi メソッドが呼び出されるとき、テストでは、プライベート メソッドのモックされた動作により、コードが RuntimeException をスローすることが予期されます。
このアプローチは、モック用の Mockito とプライベートにアクセスするための PowerMock の機能を組み合わせています。メソッドを提供し、プライベート メソッドに依存するコードをテストするための完全なソリューションを提供します。
以上がPowerMock と Mockito を使用してテスト用のプライベート メソッドをモックする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。
