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