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
Haben Sie auch eine verkehrsberuhigte Zone zu Hause?
wallpaper-1019588
So nutzen Sie das Gesetz der Anziehung erfolgreich
wallpaper-1019588
Elternzeit und Wiedereinstieg: „Die haben ja echt keinen Plan!“
wallpaper-1019588
Mit YOUR NAME bekommen wir ein visuell-emotionales Anime-Meisterwerk
wallpaper-1019588
Umsiedlung von zusätzlich 50.000 Afrikanern und Arabern in die EU, Merkel-Deutschland bekommt erst mal 10.000 und die Anderen dann später
wallpaper-1019588
[Rezension] Highland Bridge #1 - Entführt von einem Highlander
wallpaper-1019588
Unboxing Instyle Box Spring Edition 2018
wallpaper-1019588
Sparflamme ade – Vitaminmangel schadet dem Abnehmen