ホームページ > Java > &#&チュートリアル > Mockito の @Mock と @InjectMocks: 違いは何ですか?

Mockito の @Mock と @InjectMocks: 違いは何ですか?

Susan Sarandon
リリース: 2024-11-24 05:09:11
オリジナル
349 人が閲覧しました

@Mock vs. @InjectMocks in Mockito: What's the Difference?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート