JUnit 5 @ Test Annotation

JUnit 5 @ Test Annotation

1. Überblick

In diesem Artikel geben wir einen kurzen Überblick über die@Test-Anmerkung von JUnit. Diese Anmerkung bietet ein leistungsstarkes Werkzeug für die Durchführung von Einheiten- und Regressionstests.

2. Maven-Konfiguration

Um dielatest version of JUnit 5 zu verwenden, müssen wir die folgende Maven-Abhängigkeit hinzufügen:


    org.junit.jupiter
    junit-jupiter-engine
    5.1.0
    test

Wir verwenden den Bereichtest, da wir nicht möchten, dass Maven diese Abhängigkeit in unseren endgültigen Build einbezieht.

Da das todsichere Plugin JUnit 5,we’ll also need to add a provider, von Haus aus noch nicht vollständig unterstützt, wird Maven mitgeteilt, wo sich unsere Tests befinden:


    maven-surefire-plugin
    2.19.1
    
        
            org.junit.platform
            junit-platform-surefire-provider
            1.0.2
        
    

In unserer Konfiguration verwenden wir safefire 2.19.1, weilat the time of writing, version 2.20.x is not compatible with the junit-platform-surefire-provider.

3. Testmethode

Lassen Sie uns zunächst eine einfache Methode erstellen, die wir in unseren Testszenarien verwenden, um die Funktionen der Annotation von@Testzu demonstrieren:

public boolean isNumberEven(Integer number) {
    return number % 2 == 0;
}

Diese Methode solltetrue zurückgeben, wenn das übergebene Argument eine gerade Zahl ist, andernfallsfalse. Lassen Sie uns nun überprüfen, ob es so funktioniert, wie es soll.

4. Testen der Methode

In unserem Beispiel möchten wir speziell zwei Szenarien überprüfen:

  • Wenn eine gerade Zahl angegeben wird, sollte die Methodetrue zurückgeben

  • Wenn eine ungerade Zahl angegeben wird, sollte die Methodefalse zurückgeben

Dies bedeutet, dass der Implementierungscode unsereisNumberEven-Methode mit verschiedenen Parametern aufruft und überprüft, ob das Ergebnis unseren Erwartungen entspricht.

In order for the tests to be recognized as such, we’ll add the @Test annotation. Wir können so viele davon in einer Klasse haben, wie wir wollen, aber es ist eine gute Praxis, nur die verwandten zusammenzustellen. Beachten Sie auch, dassa test must not be private, nor may it return a value - andernfalls wird es einfach ignoriert.

Lassen Sie uns unter Berücksichtigung dieser Überlegungen unsere Testmethoden schreiben:

@Test
void givenEvenNumber_whenCheckingIsNumberEven_thenTrue() {
    boolean result = bean.isNumberEven(8);

    Assertions.assertTrue(result);
}

@Test
void givenOddNumber_whenCheckingIsNumberEven_thenFalse() {
    boolean result = bean.isNumberEven(3);

    Assertions.assertFalse(result);
}

Wenn wir jetzt einen Maven-Buildthe surefire plugin will go through all the annotated methods in the classes placed under src/test/java and execute them ausführen, schlägt der Build fehl, wenn Testfehler. auftreten

Wenn Sie von JUnit 4 kommen,be aware that in this version the annotation doesn’t accept any parameters. Um nach einer Zeitüberschreitung oder einer ausgelösten Ausnahme zu suchen, verwenden wir stattdessen Zusicherungen:

@Test
void givenLowerThanTenNumber_whenCheckingIsNumberEven_thenResultUnderTenMillis() {
    Assertions.assertTimeout(Duration.ofMillis(10), () -> bean.isNumberEven(3));
}

@Test
void givenNull_whenCheckingIsNumberEven_thenNullPointerException() {
    Assertions.assertThrows(NullPointerException.class, () -> bean.isNumberEven(null));
}

5. Fazit

In diesem kurzen Tutorial haben wir gezeigt, wie ein einfacher JUnit-Test mit der Annotation@Testimplementiert und ausgeführt wird.

Weitere Informationen zum JUnit-Framework finden Sie inthis post, das eine allgemeine Einführung bietet.

Der gesamte in den Beispielen verwendete Code ist inGitHub project verfügbar.