JUnit5 @RunWith

1前書き

このクイック記事では、JUnit 5フレームワークにおける @ RunWith アノテーションの使用方法について説明します。

JUnit 5では、 @ RunWith アノテーションはより強力な @ ExtendWith アノテーション** に置き換えられました。

ただし、下位互換性のために、JUnit 5では @ RunWith アノテーションを引き続き使用できます。

2 JUnit4ベースのランナーでテストを実行する

@ RunWith アノテーションを使用して、他の古いJUnit環境でJUnit5テストを実行できます。

JUnit4のみをサポートするEclipseバージョンでこれらのテストを実行する例を見てみましょう。

まず、テストするクラスを作成しましょう。

public class Greetings {
    public static String sayHello() {
        return "Hello";
    }
}

次に、この単純なJUnit 5テストを作成しましょう。

public class GreetingsTest {
    @Test
    void whenCallingSayHello__thenReturnHello() {
        assertTrue("Hello".equals(Greetings.sayHello()));
    }
}

最後に、このアノテーションを追加してテストを実行できるようにしましょう。

@RunWith(JUnitPlatform.class)
public class GreetingsTest {
   //...
}

JUnitPlatform クラスはJUnit4ベースのランナーで、JUnit4テストをJUnitプラットフォームで実行できます。

JUnit4は新しいJUnitプラットフォームのすべての機能をサポートしているわけではないので、このランナーの機能は限られていることに注意してください。

Eclipseでテストの結果を確認すると、JUnit4ランナーが使用されたことがわかります。

リンク:/uploads/junit4-300x77.jpg%20300w[]

3 JUnit5環境でテストを実行する

JUnit 5をサポートするEclipseバージョンで同じテストを実行しましょう。

この場合、 @ RunWith アノテーションはもう必要ないので、ランナーなしでテストを書くことができます。

public class GreetingsTest {
    @Test
    void whenCallingSayHello__thenReturnHello() {
        assertTrue("Hello".equals(Greetings.sayHello()));
    }
}

テスト結果は、現在JUnit5ランナーを使用していることを示しています。

リンク:/uploads/junit5-300x63.jpg%20300w[]

4 JUnit4ベースのランナーからの移行

それでは、JUnit4ベースのランナーを使用するテストをJUnit5に移行しましょう。

例としてSpringテストを使用します。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SpringTestConfiguration.class })
public class GreetingsSpringTest {
   //...
}
  • このテストをJUnit5に移行したい場合は、 @ RunWith アノテーションを新しい @ ExtendWith に置き換える必要があります。

@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = { SpringTestConfiguration.class })
public class GreetingsSpringTest {
   //...
}

SpringExtension クラスはSpring 5によって提供され、Spring TestContext FrameworkをJUnit 5に統合します。 @ ExtendWith アノテーションは Extension インターフェースを実装する任意のクラスを受け付けます。

5結論

この短い記事では、JUnit 5フレームワークでのJUnit 4の @ RunWith アノテーションの使用について説明しました。

例の完全なソースコードは、https://github.com/eugenp/tutorials/tree/master/testing-modules/junit-5[GitHubで利用可能]です。