Mockito フレームワークでの @Mock と @InjectMocks の説明
Mockito フレームワークは、テスト中にオブジェクトをモックするのに役立つアノテーションを提供します。よく使用される 2 つのアノテーションは、@Mock と @InjectMocks です。これらは、モック作成プロセスで異なる役割を果たします。
@Mock: モック作成アノテーション
簡単に言えば、@Mockモックオブジェクトを作成するのに役立ちます。特定のインターフェイスを実装するか、特定のクラスを拡張するダミー オブジェクトを生成します。モック オブジェクトは、テスト中に実際の依存関係を置き換えるために使用され、個々のコンポーネントの分離と特定のシナリオのシミュレーションを可能にします。
@InjectMocks: クラス インスタンスへのモックの注入
@Mock とは対照的に、@InjectMocks はモックと依存性注入を組み合わせたより高度なアノテーションです。テスト対象のクラスのインスタンスを作成し、重要なことに、@Mock (または @Spy) アノテーションを使用して作成されたモック オブジェクトをこのインスタンスに挿入します。
@InjectMocks が正しく機能するには、@ を使用することが不可欠です。 RunWith(MockitoJUnitRunner.class) または Mockito.initMocks(this) を使用して、モック依存関係を初期化し、クラス インスタンスに注入します。 JUnit 5 では、@ExtendWith(MockitoExtension.class) アノテーションが必要です。
両方のアノテーションを利用する例を次に示します。
// JUnit 4 @RunWith(MockitoJUnitRunner.class) public class SomeManagerTest { // ... @InjectMocks private SomeManager someManager; @Mock private SomeDependency someDependency; // This mock will be injected into someManager // ... // Tests ... }
@InjectMocks を使用すると、SomeManager インスタンスが作成されます。 SomeDependency のモック オブジェクトが挿入されているため、テスト ケースは動作のテストに集中できます。 SomeManager はその疑似依存関係と対話します。これにより、実際の依存関係に依存することなく、特定のシナリオの分離とテストが容易になります。
以上がMockito の `@Mock` と `@InjectMocks` の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。