ホームページ  >  記事  >  Java  >  Mockito の @Mock と @InjectMocks: いつどちらを使用するか?

Mockito の @Mock と @InjectMocks: いつどちらを使用するか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-24 06:49:16368ブラウズ

@Mock vs. @InjectMocks in Mockito: When to Use Which?

Mockito で @Mock と @InjectMocks を使用する場合

Mockito は、Java のモックおよび単体テスト用の人気のあるフレームワークです。モック用に @Mock と @InjectMocks という 2 つのアノテーションが提供されます。テストでモックを効果的に利用するには、これらの違いを理解することが重要です。

@Mock

@Mock は、モック オブジェクトを生成するために使用されます。フィールドに @Mock アノテーションを付けると、Mockito は指定されたクラスのオブジェクトを作成し、それをモックとして登録します。このモックは、モックのインターフェースの動作に従い、テストで実際のオブジェクトの代替を提供します。

@InjectMocks

対照的に、@InjectMocks は、テスト中のクラス。 Mockito は、@Mock アノテーションを使用して作成されたモック オブジェクトをこのインスタンスに挿入します。この手法を使用すると、特定のモック依存関係と対話しながら、テスト対象のクラスの動作をテストできます。

使用上の考慮事項

@Mock と @InjectMocks を利用するには、次のようにします。モックを初期化して注入する必要があります。 JUnit 4 では、@RunWith(MockitoJUnitRunner.class) または Mockito.initMocks(this) を使用します。 JUnit 5 では、@ExtendWith(MockitoExtension.class) を採用します。

@Mock と @InjectMocks の使用法を示す次の例を考えてみましょう。

// JUnit 4
@RunWith(MockitoJUnitRunner.class)
public class SomeManagerTest {

    @InjectMocks
    private SomeManager someManager;

    @Mock
    private SomeDependency someDependency; // injected into someManager
    
    // tests...
}

この例では、someManager にモック インスタンスが挿入されます何らかの依存性。テストでは、someManager がこのモックとどのように対話するかをアサートできるようになりました。

結論

効果的な Mockito ベースの単体テストには、@Mock と @InjectMocks を適切に使用することが不可欠です。それらの役割を明確に理解することで、テストの精度と信頼性を確保できます。

以上がMockito の @Mock と @InjectMocks: いつどちらを使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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