JUnit5 @RunWith

1. Einleitung

In diesem kurzen Artikel behandeln wir die Verwendung der Annotation @RunWith im JUnit 5-Framework.

In JUnit 5 wurde die Annotation @RunWith durch die leistungsstärkere Annotation @ExtendWith ersetzt .

Die Annotation @RunWith kann jedoch aus Gründen der Abwärtskompatibilität weiterhin in JUnit5 verwendet werden.

2. Ausführen von Tests mit einem JUnit4-basierten Runner

Mit der Annotation @RunWith können wir JUnit5-Tests mit jeder anderen älteren JUnit-Umgebung ausführen .

Sehen wir uns ein Beispiel für die Ausführung dieser Tests in einer Eclipse-Version an, die nur JUnit4 unterstützt.

Lassen Sie uns zuerst die Klasse erstellen, die wir testen werden:

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

Als nächstes erstellen wir diesen einfachen JUnit5-Test:

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

Fügen wir abschließend diese Anmerkung hinzu, um den Test ausführen zu können:

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

Die JUnitPlatform- Klasse ist ein JUnit4-basierter Runner, mit dem wir JUnit4-Tests auf der JUnit-Plattform ausführen können.

Lassen Sie uns nicht vergessen, dass JUnit4 nicht alle Features der neuen JUnit - Plattform unterstützt, so dass diese Läufer eine begrenzte Funktionalität.

Wenn wir das Ergebnis des Tests in Eclipse überprüfen, können wir sehen, dass ein JUnit4-Läufer verwendet wurde:

3. Ausführen von Tests in einer JUnit5-Umgebung

Lassen Sie uns jetzt denselben Test in einer Eclipse-Version ausführen, die JUnit5 unterstützt. In diesem Fall benötigen wir die Annotation @RunWith nicht mehr und können den Test ohne Läufer schreiben:

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

Das Testergebnis zeigt, dass wir jetzt den JUnit5-Runner verwenden:

4. Migration von einem JUnit4-basierten Runner

Lassen Sie uns nun einen Test, der einen JUnit4-basierten Runner verwendet, auf JUnit5 migrieren.

Wir werden einen Frühlingstest als Beispiel verwenden:

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { SpringTestConfiguration.class }) public class GreetingsSpringTest { // ... }

Wenn wir diesen Test auf JUnit5 migrieren möchten, müssen wir die Annotation @RunWith durch die neue Annotation @ExtendWith ersetzen :

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

Die SpringExtension- Klasse wird von Spring 5 bereitgestellt und integriert das Spring TestContext Framework in JUnit 5. Die Annotation @ExtendWith akzeptiert alle Klassen, die die Erweiterungsschnittstelle implementieren.

5. Schlussfolgerung

In diesem kurzen Artikel haben wir die Verwendung der @ RunWith- Annotation von JUnit 4 im JUnit5-Framework behandelt.

Der vollständige Quellcode für die Beispiele ist auf GitHub verfügbar.