ホームページ >Java >&#&チュートリアル >@Mock、@MockBean、または 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
どのアプローチを使用するかは、テスト シナリオと依存関係の管理方法によって異なります:
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 サイトの他の関連記事を参照してください。