ホームページ >Java >&#&チュートリアル >Mockito を使用して Java のメソッドを選択的にモックする方法

Mockito を使用して Java のメソッドを選択的にモックする方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-07 18:34:13655ブラウズ

How to Selectively Mock Methods in Java with Mockito?

Mockito を使用した Java での選択的なメソッドのモック

Java では、Mockito を使用すると、開発者は他のメソッドに影響を与えずに、クラス内の特定のメソッドをモックできます。このプロセスは部分モックとして知られています。

次の Stock クラスを考えてみましょう:

public class Stock {

    private final double price;
    private final int quantity;

    public Stock(double price, int quantity) {
        this.price = price;
        this.quantity = quantity;
    }

    public double getPrice() {
        return price;
    }

    public int getQuantity() {
        return quantity;
    }

    public double getValue() {
        return getPrice() * getQuantity();
    }
}

テスト シナリオでは、getPrice() と getPrice() をモックしたい場合があります。 getQuantity() メソッドを使用して特定の値を返します。ただし、getValue() メソッドが意図した計算を実行することが必要です。

部分モックを使用すると、次のようにこれを実現できます。

Stock stock = mock(Stock.class);
when(stock.getPrice()).thenReturn(100.00);
when(stock.getQuantity()).thenReturn(200);
when(stock.getValue()).thenCallRealMethod();

この構成では:

  • when(stock.getPrice()).thenReturn(100.00);: getPrice() メソッドをモックして 100.00 を返します。
  • when(stock.getQuantity()).thenReturn(200);: getQuantity() メソッドをモックして返します200.
  • when(stock.getValue()).thenCallRealMethod();: getValue() メソッドが元のコードの指定どおりに実行されることを指定します。

あるいは、代わりに spy() メソッドを使用することもできます。 mock():

Stock stock = spy(Stock.class);
doReturn(100.00).when(stock).getPrice();
doReturn(200).when(stock).getQuantity();

この場合、スタブ化されていないすべてのメソッド (getValue() など) は元の実装を呼び出します。

モックは注目に値します。 getValue() がモックの戻り値ではなくそれらの値に直接依存している場合、getPrice() や getQuantity() などのメソッドは望ましい結果を生成しない可能性があります。価値観。このような場合は、以下に示すように、モックを完全に回避し、テストでの実際の実装に依存する方が適切な場合があります。

Stock stock = new Stock(100.00, 200);
double value = stock.getValue();
assertEquals(100.00 * 200, value, 0.00001);

以上がMockito を使用して Java のメソッドを選択的にモックする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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