1. 序章
このクイックチュートリアルでは、JUnit5フレームワークでの@RunWithアノテーションの使用について説明します。
JUnit 5では、@RunWithアノテーションがより強力な@ExtendWithアノテーションに置き換えられました。
ただし、下位互換性のために、@RunWithアノテーションをJUnit5で引き続き使用できます。
2. JUnit4ベースのランナーを使用したテストの実行
@RunWith アノテーションを使用して、古いJUnit環境でJUnit5テストを実行できます。
JUnit4のみをサポートするEclipseバージョンでテストを実行する例を見てみましょう。
まず、テストするクラスを作成しましょう。
public class Greetings {
public static String sayHello() {
return "Hello";
}
}
次に、このプレーンなJUnit5テストを作成します。
public class GreetingsTest {
@Test
void whenCallingSayHello_thenReturnHello() {
assertTrue("Hello".equals(Greetings.sayHello()));
}
}
最後に、このアノテーションを追加して、テストを実行できるようにします。
@RunWith(JUnitPlatform.class)
public class GreetingsTest {
// ...
}
JUnitPlatform クラスは、JUnit4ベースのランナーであり、JUnitプラットフォームでJUnit4テストを実行できます。
JUnit 4は新しいJUnitプラットフォームのすべての機能をサポートしているわけではないため、このランナーの機能は制限されていることに注意してください。
Eclipseでテストの結果を確認すると、JUnit4ランナーが使用されたことがわかります。
3. JUnit5環境でのテストの実行
次に、JUnit5をサポートするEclipseバージョンで同じテストを実行してみましょう。 この場合、 @RunWith アノテーションは不要になり、ランナーなしでテストを記述できます。
public class GreetingsTest {
@Test
void whenCallingSayHello_thenReturnHello() {
assertTrue("Hello".equals(Greetings.sayHello()));
}
}
テスト結果は、現在JUnit5ランナーを使用していることを示しています。
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クラスはSpring5によって提供され、SpringTestContextFrameworkをJUnit5に統合します。 @ExtendWith アノテーションは、Extensionインターフェースを実装するすべてのクラスを受け入れます。
5. 結論
この短い記事では、JUnit5フレームワークでのJUnit4の@RunWithアノテーションの使用について説明しました。
この記事の完全なソースコードは、GitHubでから入手できます。