JUnit5 @RunWith

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:

junit4 test

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:

junit5 test

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.