JUnit5 @RunWith
1. Einführung
In diesem kurzen Artikel wird die Verwendung der Annotation@RunWithim JUnit 5-Framework behandelt.
In Einheit 5 sindthe @RunWith annotation has been replaced by the more powerful @ExtendWith annotation.
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
Wir können JUnit5-Tests mit jeder anderen älteren JUnit-Umgebung unter Verwendung der Annotation@RunWithausführen.
Sehen wir uns ein Beispiel für die Ausführung dieser Tests in einer Eclipse-Version an, die nur JUnit4 unterstützt.
Erstellen wir zunächst die Klasse, die wir testen möchten:
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 KlasseJUnitPlatform ist ein JUnit4-basierter Runner, mit dem wir JUnit4-Tests auf der JUnit-Plattform ausführen können.
Lassen Sie unskeep in mind that JUnit4 does not support all the features of the new JUnit Platform, so this runner has a limited functionality.
Wenn wir das Ergebnis des Tests in Eclipse überprüfen, können wir sehen, dass ein JUnit4-Runner 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@RunWithnicht 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 neuen@ExtendWith ersetzen:
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = { SpringTestConfiguration.class })
public class GreetingsSpringTest {
// ...
}
Die KlasseSpringExtensionwird von Spring 5 bereitgestellt und integriert das Spring TestContext Framework in JUnit 5. Die Annotation@ExtendWithakzeptiert jede Klasse, die die SchnittstelleExtensionimplementiert.
5. Fazit
In diesem kurzen Artikel haben wir die Verwendung der@RunWith-Anmerkung von JUnit 4 im JUnit5-Framework behandelt.
Der vollständige Quellcode für die Beispiele istover on GitHub verfügbar.