PowerMockito を使用して単一の静的メソッドをモックし、オブジェクトを返す
このシナリオでは、静的メソッド m1 をモックすることを目的としています。 2 つの静的メソッド m1 と m2 を含むクラス。目標は、呼び出されたときに m1 がオブジェクトを返すことです。
これを達成するために、最初は PowerMockito.mockStatic をカスタム Answer とともに使用して m1 の戻り値を設定しようとしました。ただし、このアプローチでは、戻り値の型が異なる m1 と m2 の両方を呼び出したため、型不一致エラーが発生しました。
また、PowerMockito.when を使用して m1 の戻り値を直接指定しようとしました。ただし、これは、後で m1 が呼び出されたときに有効になりませんでした。
正しい戦略は、引数 1 バージョンのモックスタティックを使用して静的モックを有効にし、when-thenReturn 構文を使用して戻り値を指定することです。対象となるメソッド。その方法は次のとおりです。
import static org.mockito.Mockito.*; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; class ClassWithStatics { public static String getString() { return "String"; } public static int getInt() { return 1; } } @RunWith(PowerMockRunner.class) @PrepareForTest(ClassWithStatics.class) public class StubJustOneStatic { @Test public void test() { PowerMockito.mockStatic(ClassWithStatics.class); when(ClassWithStatics.getString()).thenReturn("Hello!"); System.out.println("String: " + ClassWithStatics.getString()); System.out.println("Int: " + ClassWithStatics.getInt()); } }
この例では、ClassWithStatics に 2 つの静的メソッド getString と getInt が含まれています。テスト クラス StubJustOneStatic は、PowerMockito を使用して ClassWithStatics の静的モックを有効にし、getString の戻り値を "Hello!" にスタブします。 when-thenReturn を使用します。 getInt のデフォルトの動作は保持されるため、引き続き 1 を返します。
以上がPowerMockitoを使用して単一の静的メソッドをモックし、オブジェクトを返す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。