JUnit 5 @Test Annotation

1. Übersicht

In diesem Artikel geben wir einen kurzen Überblick über die @ Test- Annotation von JUnit . Diese Anmerkung bietet ein leistungsstarkes Tool zum Durchführen von Einheiten- und Regressionstests.

2. Maven-Konfiguration

Um die neueste Version von JUnit 5 zu verwenden, müssen Sie die folgende Maven-Abhängigkeit hinzufügen:

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

Wir verwenden den Testumfang , weil wir diese Abhängigkeit ist in unserem letzten Build nicht Maven wollen.

Da das todsichere Plugin JUnit 5 von Haus aus noch nicht vollständig unterstützt, müssen wir auch einen Anbieter hinzufügen , der Maven mitteilt, 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 surefire 2.19.1, da Version 2.20.x zum Zeitpunkt des Schreibens nicht mit dem junit-platform-surefire-Anbieter kompatibel ist .

3. Testmethode

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

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

Diese Methode sollte true zurückgeben, wenn das übergebene Argument eine gerade Zahl ist, andernfalls false . 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 Methode true zurückgeben
  • Wenn eine ungerade Zahl angegeben wird, sollte die Methode false zurückgeben

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

Damit die Tests als solche erkannt werden, fügen wir die Annotation @Test hinzu . 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, dass ein Test weder privat sein darf noch einen Wert zurückgeben darf - andernfalls wird er 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-Build ausführen , durchläuft das todsichere Plugin alle mit Anmerkungen versehenen Methoden in den unter src / test / java platzierten Klassen und führt sie aus , sodass der Build fehlschlägt, wenn Testfehler auftreten .

Wenn Sie von JUnit 4 kommen, beachten Sie, dass die Annotation in dieser Version keine Parameter akzeptiert. Um nach einem Timeout 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. Schlussfolgerung

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

Weitere Informationen zum JUnit-Framework finden Sie in diesem Beitrag, der eine allgemeine Einführung bietet.

Der gesamte in den Beispielen verwendete Code ist im GitHub-Projekt verfügbar.