Parametrisierte Tests in JUnit

Was ist das?

Testet den gleichen Code für mehrere Eingaben.

Z. B. ein Test für mehrere Jahre (2000, 2004, ..., 2024) dass sie jeweils Schaltjahre sind, anstatt pro Jahr einen eigenen Test schreiben zu müssen.

Vorteile

  • Erleichtert Wartung von Tests
  • Weniger Code, also schneller mehr Testabdeckung
  • Einfache Fehlerbehebung, weil man weiss, bei welchem Parameter der Test fehlgeschlagen ist

Vorher...

...nachher

Hinweise

  • Statt strings können auch primitive Datentypen oder Class eingesetzt werden.
  • @NullSource und @EmptySource können null-Werte und leere Strings testen.
  • Andere Typen können dynamisch mit eienr Methode oder aus einer CSV erzeugt werden.

Testprotokoll in IntelliJ

(Screenshot aus IntelliJ IDEA von Jetbrains)

Quellen

Baeldung: Infos zu parametrisierten Tests in JUnit 5

https://www.baeldung.com/parameterized-tests-junit-5

JUnit JavaDoc: technische Infos zu den Annotationen

https://junit.org/junit5/docs/current/api/org.junit.jupiter.params/org/junit/jupiter/params/provider/ValueSource.html