@Mock、@MockBean、または Mockito.mock() のどれがあなたに適したモック手法ですか?

Susan Sarandon
リリース: 2024-10-26 06:52:30
オリジナル
570 人が閲覧しました

 Which Mocking Approach is Right for You: @Mock, @MockBean, or Mockito.mock()?

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

単体テストには依存関係のモックが含まれることがよくありますが、 Java でこれを行うためのさまざまなアプローチ。これらのオプションを区別するために、@Mock、@MockBean、Mockito.mock() のそれぞれの目的と機能を調べてみましょう。

@Mock と Mockito.mock()

@Mock と Mockito.mock() は両方とも Mockito ライブラリに由来しており、モックを作成するためのアノテーションベースの構文と直接メソッド呼び出しを提供します。

@Mock を @RunWith アノテーションとともに使用すると、Mockito ライブラリが有効になります。テスト実行中の注釈。このアノテーションは、アタッチされている変数を Mockito モックとしてマークします。

import org.mockito.Mock;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;

@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {
    @Mock
    private MyService myservice;
}
ログイン後にコピー

対照的に、Mockito.mock() はモックを直接作成します。

import org.mockito.Mockito;
...
MyService myservice = Mockito.mock(MyService.class);
ログイン後にコピー

@MockBean from一方、Spring Boot

@MockBean は、Spring Boot テスト ライブラリによって、具体的には org.springframework.boot.test.mock.mockito.MockBean クラスの下で提供されます。このアノテーションは、Spring Boot コンテキストで使用するために特別に設計されています。

@MockBean を使用すると、モック化された Bean を Spring ApplicationContext に追加し、実際の Bean インスタンスの代わりにモックを効果的にオーバーライドまたは追加できます。

適切なオプションの選択: クラシック Mockito と @MockBean

どのアプローチを使用するかは、テスト シナリオと依存関係の管理方法によって異なります:

  • クラシックMockito: Spring Boot コンテナーに依存せず、テストされたコンポーネントを分離したい単体テストに最適です。このアプローチは非常に効率的で、分離を促進します。
  • @MockBean: Spring Boot コンテナとの対話が必要なテスト、特にコンテナによって管理される Bean をモックする場合に推奨されます。

Spring WebMVC での一般的な @MockBean の使用法

たとえば、@WebMvcTest アノテーションが付けられた Web テスト シナリオでは、@MockBean は通常、テスト対象のコントローラーによって使用される Bean をモックするために使用されます。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.web.servlet.MockMvc;
...
@WebMvcTest(FooController.class)
public class FooControllerTest {
    @Autowired
    private MockMvc mvc;

    @MockBean
    private FooService fooServiceMock;
}
ログイン後にコピー

これらの違いを理解し、テストのニーズに基づいて適切なアプローチを選択することで、依存関係を効果的に管理し、Mockito と Spring Boot を使用した Java での効率的かつ正確なテストを保証できます。

以上が@Mock、@MockBean、または Mockito.mock() のどれがあなたに適したモック手法ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!