Mockito の @Mock と @InjectMocks の違いを理解する
Java の有名なモック フレームワークである Mockito は、@Mock という 2 つのアノテーションを提供します。単体テストを容易にするための @InjectMocks。どちらもテスト プロセスで重要な役割を果たしますが、異なる機能があります。
@Mock: モック作成ツール
@Mock アノテーションはモックの作成に使用されます。オブジェクト。モック オブジェクトは、制御された方法で動作をシミュレートする、実際のオブジェクトの軽量の代替品です。クラスまたはインターフェイスに @Mock のアノテーションを付けると、Mockito は単体テスト中に操作および検証できるモック実装を生成します。
@InjectMocks: 依存関係注入ファシリテーター
@Mock とは対照的に、@InjectMocks は異なる目的を果たします。 @Mock アノテーションを使用して作成されたモックまたはスパイ (部分的にモックできる実際のクラスのインスタンス) を挿入するために、テスト対象のクラスに適用されます。この挿入プロセスはテストの初期化中に自動的に行われるため、テスト構成のセットアップが便利になります。
それらの連携方法
@Mock と @ の相互作用を示すためInjectMocks については、次のコード スニペットを検討してください:
@RunWith(MockitoJUnitRunner.class) public class SomeManagerTest { @InjectMocks private SomeManager someManager; @Mock private SomeDependency someDependency; // injected into someManager // tests... }
この例では、@InjectMocks アノテーションは次のとおりです。 SomeManagerTest クラスに適用され、それがテスト対象のクラスであることを指定します。 @Mock アノテーションは、SomeDependency クラスのモックを作成するために使用されます。テストが実行されると、モックの依存関係が someManager インスタンスに挿入されます。
@Mock と @InjectMocks を組み合わせることで、モックのセットアップ プロセスを合理化し、複雑なクラスの相互作用のテストを簡素化できます。 MockitoJUnitRunner.class (JUnit 5 の場合は MockitoExtension.class) をテスト クラスに含めるか、モックを初期化して注入するために手動で初期化する必要があることに注意することが重要です。
以上がMockito の @Mock と @InjectMocks: 違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。