ホームページ >Java >&#&チュートリアル >PowerMock を使用して単一の静的メソッドをモックし、カスタム オブジェクトを返す方法

PowerMock を使用して単一の静的メソッドをモックし、カスタム オブジェクトを返す方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-09 20:33:18431ブラウズ

How to Mock a Single Static Method and Return a Custom Object Using PowerMock?

PowerMock: 単一の静的メソッドをモックしてオブジェクトを返す

Java で静的メソッドをモックする場合、特定のメソッドを選択的にスタブしてオブジェクトを返す必要が生じる場合があります。カスタムオブジェクト。 PowerMock は、これを実現するために必要な機能を提供します。

静的モックの有効化

静的メソッドをモックするには、まず PowerMockito.mockStatic() を使用してターゲット クラスの静的モックを有効にする必要があります。ただし、クラスに戻り値の型が異なる複数の静的メソッドが含まれている場合、このメソッドに割り当てられたデフォルトの回答戦略では型不一致エラーが発生する可能性があります。

モッキングとスタブ

代わりに、モッキングとスタブを使用する必要があります。静的モックを有効にするために、mockStatic() の -argument オーバーロードを使用してから、PowerMockito.when() と thenReturn() を使用して、個々のメソッドに必要な動作を指定します。これにより、スタブ化されたメソッドごとにカスタムの戻り値を定義できます。

使用例

1 つは String を返し、もう 1 つは int を返す 2 つの静的メソッドを持つクラスを考えます。

class ClassWithStatics {
  public static String getString() {
    return "String";
  }

  public static int getInt() {
    return 1;
  }
}

getString() メソッドをスタブにして「Hello!」を返すには、次のようにします。以下:

PowerMockito.mockStatic(ClassWithStatics.class);
when(ClassWithStatics.getString()).thenReturn("Hello!");
System.out.println("String: " + ClassWithStatics.getString());

getInt() メソッドが明示的にスタブ化されていないことに注意してください。 0 を返すデフォルトの動作が使用されます。

結論

静的モックとスタブ化手法を正しく組み合わせて使用​​することで、単一の静的メソッドを選択的にモックし、PowerMock でオブジェクトを返すことができます。これにより、Java コード内の特定の静的メソッドの動作をテストして分離できます。

以上がPowerMock を使用して単一の静的メソッドをモックし、カスタム オブジェクトを返す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。