ホームページ >Java >&#&チュートリアル >JUnit 単体テスト フレームワークを使用する 静的メソッドをモックする
JUnit 単体テスト フレームワークの使用方法 静的メソッドのモック: PowerMock: PowerMock の依存関係を追加します。 @PrepareForTest アノテーションを使用して、モックする静的メソッドを指定します。 EasyMock を使用して静的メソッドをモックします。 EasyMock: EasyMock クラスをインポートします。 EasyMock.mockStatic() メソッドを使用して、静的メソッドをモックします。 Expect() メソッドを使用して期待値を設定し、replay() メソッドを使用して呼び出しを実行します。
JUnit 単体テスト フレームワークの使用 静的メソッドのモック
はじめに
JUnit の使用単体テストを実行する場合、テスト対象のコードが依存する外部コンポーネントを分離するためにモック オブジェクトが必要です。静的メソッドの場合、Mockito などの従来の Mock フレームワークを直接使用することはできません。この記事では、PowerMock フレームワークと EasyMock フレームワークを使用して静的メソッドをモックする方法を説明します。
PowerMock
PowerMock は、静的メソッド、最終メソッド、およびプライベート メソッドをモックできる Java 用の強力なモック フレームワークです。 PowerMock を使用するには、pom.xml ファイルに次の依存関係を追加します:
<dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-easymock</artifactId> <version>2.0.10</version> <scope>test</scope> </dependency>
次に、テスト クラスで @PrepareForTest アノテーションを使用して、モックするクラスの静的メソッドを指定します:
@ExtendWith(PowerMockRunner.class) @PrepareForTest(TargetClass.class) class TestClass { // ...
PowerMock を使用した後、EasyMock を使用して静的メソッドをモックできます。
StaticMock.mockStatic(TargetClass.class); ... // 设置预期值和执行调用 StaticMock.verify(TargetClass.class);
EasyMock
EasyMock は、Mock クラスを直接使用できる軽量の Mock フレームワークです。そしてインターフェース。 EasyMock Mock 静的メソッドの使用方法は次のとおりです。
// 导入 EasyMock 类 import static org.easymock.EasyMock.*; ... // Mock 静态方法 EasyMock.mockStatic(TargetClass.class); TargetClass.staticMethod(); ... // 设置预期值和执行调用 EasyMock.verify(TargetClass.class);
実用的なケース
静的メソッド getStaticData() を含む UtilityClass に依存するクラス TargetClass があるとします。 。 UtilityClass に依存する TargetClass のメソッドをテストしたいと考えています。
PowerMock の使用
@ExtendWith(PowerMockRunner.class) @PrepareForTest(TargetClass.class) class ExampleTest { @Test void testTargetClass() throws Exception { StaticMock.mockStatic(UtilityClass.class); PowerMock.expectPrivateCall(TargetClass.class, "getStaticData").andReturn("Some data"); // ... 调用 TargetClass 的方法并验证结果 } }
EasyMock の使用
@Test void testTargetClass() { EasyMock.mockStatic(UtilityClass.class); expect(UtilityClass.getStaticData()).andReturn("Some data"); replay(UtilityClass.class); // ... 调用 TargetClass 的方法并验证结果 }
結論
PowerMockおよび EasyMock は、静的メソッドをモックするための柔軟なオプションを提供します。これらのフレームワークにより、テストの独立性と信頼性が高まります。
以上がJUnit 単体テスト フレームワークを使用する 静的メソッドをモックするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。