1. ホーム
  2. java

[解決済み] JUnit5でMockitoを使用する方法

2022-04-26 18:09:49

質問

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

JUnit4 では、単に @RunWith(MockitoJUnitRunner.class) アノテーションです。JUnit5では @RunWith アノテーション?

解決方法は?

Mockitoの使い方にはいろいろありますが、一つずつ見ていきましょう。

手動で

を使用して手動でモックを作成します。 Mockito::mock は、JUnit のバージョン (あるいはテストフレームワーク) に関係なく動作します。

アノテーションベース

を使用しています。 モック -アノテーションと、それに対応する MockitoAnnotations::initMocks から モックの作成 はJUnitのバージョンに関係なく動作します(あるいはテストフレームワークもそうですが、テストコードがモジュールで終わるかどうかによって、Java 9がここに干渉する可能性があります)。

Mockitoエクステンション

JUnit 5 は 強力な拡張モデル で、Mockitoは最近、グループ/アーティファクトIDの下で1つを公開しました。 org.mockito : モキート・ジュニット・ジュピター .

を追加することで拡張機能を適用できます。 @ExtendWith(MockitoExtension.class) をテストクラスに追加し、モックフィールドのアノテーションを @Mock . から MockitoExtension のJavaDocを参照してください。

@ExtendWith(MockitoExtension.class)
public class ExampleTest {

    @Mock
    private List list;

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

}

MockitoExtensionのドキュメント には、モックをインスタンス化する他の方法、たとえばコンストラクタ注入 (テストクラスで final フィールドを参照する場合) が記載されています。

ルールなし、ランナーなし

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