ホームページ  >  記事  >  Java  >  Java でのモッキングに @Mock、@MockBean、または Mockito.mock() をいつ使用する必要がありますか?

Java でのモッキングに @Mock、@MockBean、または Mockito.mock() をいつ使用する必要がありますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-26 05:03:02630ブラウズ

When Should I Use @Mock, @MockBean, or Mockito.mock() for Mocking in Java?

@Mock、@MockBean、Mockito.mock() の違いを理解する

背景

ソフトウェア テスト, モッキングは、実際の依存関係の動作をシミュレートする偽のオブジェクトを作成するために使用される手法です。 Mockito は Java で人気のモック フレームワークであり、オブジェクトをモックする複数の方法を提供します。このガイドでは、さまざまなアプローチとその適切な使用法を比較します。

Mockito.mock() と @Mock (Mockito アノテーション)

Mockito.mock() と @Mock は次のとおりです。標準の Mockito ライブラリから。どちらもクラスまたはインターフェイスのモック オブジェクトを作成します。 @Mock は便利なアノテーションベースのソリューションを提供しますが、Mockito.mock() はより明示的です。機能的には同等です。ただし、コードが簡素化されるため、@Mock を使用することをお勧めします。

@MockBean (Spring Boot)

@MockBean は、Spring Boot テスト ライブラリによって提供されるラッパーです。これは、Mockito モッキング機能と Spring の Bean 管理を組み合わせたものです。 Mockito.mock() や @Mock とは異なり、@MockBean は Spring ApplicationContext に注入されるモック Bean を作成します。これには 2 つの重要な特性があります。

  • 同じタイプの Bean がコンテキスト内に存在する場合、それはモックに置き換えられます。
  • 同じタイプの Bean が存在しない場合、モック Bean がコンテキストに追加されます。

使用ガイドライン

プレーン Mockito を使用する場合: プレーン Mockito を使用せずにコンポーネントをテストする場合は、Mockito.mock() または @Mock を使用します。 Spring Boot の依存関係に依存している場合、またはテストされたコンポーネントの分離が重要な場合。

@MockBean を使用する場合: Web テスト スライス (@WebMvcTest など)、または Spring Boot Bean の変更が必要なその他のテスト シナリオで @MockBean を使用します。

@MockBean の例

FooController が FooService に依存する Spring Boot Web テストを考えてみましょう。 @MockBean を使用すると、テスト コンテキストで実際の FooService Bean をモックに置き換えることができます。

<code class="java">@WebMvcTest(FooController.class)
public class FooControllerTest {

    @MockBean
    private FooService fooServiceMock;

    // ... //
}</code>

この例では、fooServiceMock インスタンスが FooController に挿入され、その動作と制御をモックできるようになります。コントローラーとのやり取り

以上がJava でのモッキングに @Mock、@MockBean、または Mockito.mock() をいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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