161

Mockito と JUnit 5 でインジェクションを使用するにはどうすればよいですか?

@RunWith(MockitoJUnitRunner.class)JUnit4 では、アノテーションを使用するだけです。JUnit5には@RunWith注釈はありませんか?

4

4 に答える 4

241

Mockito を使用するにはさまざまな方法があります。1 つずつ説明します。

手動で

Mockito::mockJUnitのバージョン(またはテストフレームワーク)に関係なく、手動でモックを作成できます。

注釈ベース

@Mockアノテーションを使用してモックMockitoAnnotations::initMocks作成するための対応する呼び出しは、JUnit のバージョンに関係なく機能します (またはテスト フレームワークですが、テスト コードがモジュールで終了するかどうかに応じて、Java 9 がここで干渉する可能性があります)。

モッキート拡張機能

JUnit 5 には強力な拡張モデルがあり、Mockito は最近、グループ/アーティファクト ID org.mockito : mockito-junit-jupiter の下で公開しました。

テストクラスに追加@ExtendWith(MockitoExtension.class)し、モック化されたフィールドに@Mock. MockitoExtensionの JavaDocから:

@ExtendWith(MockitoExtension.class)
public class ExampleTest {

    @Mock
    private List list;

    @Test
    public void shouldDoSomething() {
        list.add(100);
    }

}

MockitoExtension のドキュメントでは、モックをインスタンス化する他の方法について説明しています。たとえば、コンストラクター インジェクション (テスト クラスの最終フィールドを優先する場合) などです。

ノールール、ノーランナー

JUnit 4 のルールとランナーは JUnit 5 では機能しないため、MockitoRuleMockito ランナーは使用できません。

于 2016-12-04T19:53:41.977 に答える
5

新しい@ExtendWith注釈を使用する必要があります。

残念ながら、拡張機能はまだリリースされていません。githubでは、拡張機能のベータ版実装を確認できます。デモテストの例として。

于 2016-12-04T16:50:52.417 に答える