Cooler CSV Reader in JUnit 5

Will man Testfälle aus einer CSV-Datei verwenden, geht das mit JUnit 5 Super einfach. Es gibt da eine neue Annotation @CsvFileSource der nur der Dateiname der CSV-Datei übergeben werden muss, und schon wird für jede Zeile der Test ausgeführt. Die Datei muss im Classpath liegen und mit Komma (,) getrennt sein. Sie darf keine Überschrift haben.

JUnit 5

Als Beispiel soll mal die flug-data.csv dienen, die ua. die Summe aller erfassten Flugzeuge enthält.

Hier ein Auszug:

aed4022e-c6e9-45b1-96c1-14270c68a036,3550,Fri Jun 30 07:37:25 CEST 2017,287,148,115,200,139,150,110,122,129,157,155,250,347,531,293,302,99,16
8695a419-e76a-46f4-9a97-3ba7f0d06999,3514,Fri Jun 30 08:17:07 CEST 2017,206,138,126,181,137,151,126,119,117,142,172,214,338,576,353,292,103,23
ee29ce4a-4b9c-4491-ab6c-e888ccbbf4fa,3612,Fri Jun 30 08:29:03 CEST 2017,289,136,121,178,171,144,134,117,132,145,166,223,323,573,360,284,94,22
a95c25b5-8b3d-4922-9ce3-2d22269b32e8,3555,Fri Jun 30 09:23:14 CEST 2017,213,135,120,191,130,178,113,141,123,158,150,241,337,549,383,289,87,17
874494b7-4824-40b2-8660-d9acec56f837,4121,Fri Jun 30 11:27:51 CEST 2017,220,142,129,209,165,158,137,153,141,174,191,339,395,672,364,369,139,24
562e4c98-98bd-472c-9e9b-fc919c2260aa,5055,Fri Jun 30 16:00:44 CEST 2017,237,195,218,308,260,250,172,158,210,270,248,424,493,696,365,372,127,52
898c57c1-88c2-436d-b49a-a2db85ddc1fb,3277,Sun Jul 02 08:35:18 CEST 2017,211,116,92,156,118,129,102,126,99,125,134,198,308,592,393,289,77,12
6e3663bf-19c1-49fe-8260-3aa4e237b198,5084,Thu Jul 06 15:57:54 CEST 2017,292,206,216,318,259,221,149,150,179,211,230,364,474,781,421,390,160,63
ac38b07f-3aa6-4908-a7d7-bae630916f99,5296,Wed Jul 19 17:34:38 CEST 2017,259,237,214,347,272,237,181,174,186,237,202,332,440,821,439,480,183,55
b7f9487e-dd29-4095-a064-d401192ce9ad,4904,Sun Jul 23 20:32:03 CEST 2017,227,275,221,331,264,209,165,147,171,190,218,329,379,726,434,394,157,67

Wir wollen jetzt jede Zeile überprüfen, ob die Summe über 3000 Flugzeuge liegt und ob die UID vorhanden ist. Auch wollen wir die Testergebnisse um eine laufende Nr. ergänzen.

Hier die Methode:

@DisplayName("CSV Flugdaten validierung")
@ParameterizedTest(name = "Test Nr. {index} mit Summe: {1} und UID: {0} ")
@CsvFileSource(resources = "/flug-data.csv")
void flugDatenDateiTest(String uid, int summe) {

	assertNotNull(uid, "Da fehlt eine UID");
	assertTrue(summe > 3000, "Das sind zu wenig Flugzeuge!");
}

Mit {index} kann auf die laufende Nr. zugegriffen werden. Und mit {0} auf die erste Spalte mit {1} auf die zweite Spalte usw.

Der Testlauf sieht dann so aus:
Cooler CSV Reader in JUnit 5

Diese und auch andere Klassen sind in JUnit 5 noch mit @API(Experimental) annotiert. D.h. sie können in zukünftigen Versionen ohne weiteres auch wegfallen.

Übrigens ist in der JUnit 5 Version der Nachrichten-Parameter nicht mehr an der 1. Stelle sondern an der Letzten. So kann man die Methoden auch auseinander halten und es braucht nicht mehr viel gescrollt zu werden:

assertNotNull(uid, "Da fehlt eine UID");
assertTrue(summe > 3000, "Das sind zu wenig Flugzeuge!");

Ähnliche Artikel:

  1. Anzahl Flugzeuge weltweit – (Tendenz steigend) – Aktuell 5055
  2. Rest Test Programm: Java Migration von JUnit 4 nach JUnit 5 (1.0.0.-M6)
  3. JUnit 5 @ParameterizedTest mit @ValueSource oder 3 Gründe warum man keine JUnit Tests schreiben sollte!

wallpaper-1019588
Symptome deines spirituellen Erwachens
wallpaper-1019588
Alles, was Sie über 55 Jahre James Bond 007 wissen müssen
wallpaper-1019588
Paradiesisches Kunstwerk
wallpaper-1019588
Ba Guan – die Kunst des Schröpfens (Seminar)
wallpaper-1019588
The Prodigy: Freigedreht
wallpaper-1019588
Proust lesen Tag 65-Im Schatten junger Mädchenblüte_Erster Aufenthalt in Balbec
wallpaper-1019588
37/100 – Das coolste Family Handy
wallpaper-1019588
SEINSORIENTIERTE KÖRPERTHERAPIE (244): Die Poesie der Liebe und mein Weg dorthin