Mit der @CsvSource Annotation in JUnit 5 kann man mit Kommaseparierte Parameter leicht und übersichtliche Tests schreiben. Die API ist aber noch im EXPERIMENTAL Status.
Hier mal ein Beispiel. Für jeden Kommandozeilen Parameter eine Testmethode schreiben:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
@Test void testHilfe() throws Exception { String[] args = { "-h" }; Start.main(args); } @Test void testVersion() throws Exception { String[] args = { "-v" }; Start.main(args); } @Test void testFehler() throws Exception { String[] args = { "-fehler" }; Start.main(args); } |
Das kann leicht mit JUnit 5 übersetzt und vereinfacht werden mit:
1 2 3 4 5 6 |
@ParameterizedTest(name = "{index}. Überprüfter Kommandozeilen Parameter: {arguments}") @CsvSource({ "-h", "-v", "-Kommandozeilenfehler", "-i", "-a", "-t" }) void kommandoZeilenTest(String kommandozeilenparameter) throws Exception { Start.main(new String[] { kommandozeilenparameter }); } |
Einfach die Parameter der @CsvSource Annotation hinzufügen. Die Testmethode wird dann 6 mal aufgerufen mit jeden Parameter einmal, und der Methoden Name ist auch schön übersichtlich. Es können die {index} und {arguments} Parameter wie folgt verwendet werden: