JUnit 5 - DisplayName-Annotation funktioniert nicht

White_Fox

Top Contributor
Moin allerseits

Ich stricke gerade einige Unittests von JUnit4 auf JUnit5 um, und möchte dazu gerne ein paar Konsolenausgaben haben.

Jetzt fummelt JUnit 5 ja forsch in den Outputstreams herum, und so wird System.out.println(":) :) :)"); leider gelegentlich verschluckt. Stattdessen kann man Ausgaben nun über Annotationen steuern. Verspricht zumindest die Doku:

Mal davon abgesehen daß ich nicht sehe, daß es irgendeinen Vorteil bringt - es schränkt lediglich die Flexibilität ein und einige Sachen, die ich in anderen Tests mache, funktionieren damit gar nicht mehr soweit ich das sehe (z.B. Zeitmessungen).
Und dummerweise – deshalb dieser Thread – funktioniert die DisplayName-Annotation auch nicht wie versprochen.

Ich habe frecherweise einfach mal die Annotationen in den Beispielen in meinen Test reinkopiert - aber das Ausgabefenster bleibt leer. Ich habe den Test auch mal über die Powershell direkt gestartet um auszuschließen das Netbeans irgendetwas verhackstück, aber da bleiben die Meldungen genauso aus. In den Imports ist auch nichts mehr aus JUnit 4 drin.

Hatte das jemand schonmal, und weiß noch woran es lag?
 

mihe7

Top Contributor
Hm... ich kann davon eigentlich nichts bestätigen. Der DisplayName dient m. E. nur dazu, den Namen der Tests "schön" darzustellen. Die Ausgaben über System.out werden ganz normal im ... Output-Tab (wenn ich mich gerade nicht täusche) dargestellt. Bei Maven muss man allerdings aufpassen, dass man eine aktuelle Surefire-Version verwendet, sonst werden die Tests gar nicht erst ausgeführt. Wie sich der Spaß bei Gradle verhält... kein Ahnung.
 

White_Fox

Top Contributor
Hm... ich kann davon eigentlich nichts bestätigen. Der DisplayName dient m. E. nur dazu, den Namen der Tests "schön" darzustellen. Die Ausgaben über System.out werden ganz normal im ... Output-Tab (wenn ich mich gerade nicht täusche) dargestellt. Bei Maven muss man allerdings aufpassen, dass man eine aktuelle Surefire-Version verwendet, sonst werden die Tests gar nicht erst ausgeführt. Wie sich der Spaß bei Gradle verhält... kein Ahnung.
Ja, mehr als Testnamen darstellen können die Annotationen anscheinend wirklich nicht. Deshalb verstehe ich deren Daseinsberechtigung auch nicht, da ein simples System.out.print.n(":)"); das auch kann. Aber dafür muß man sich nicht durch die JUnit5-Doku wühlen. Das mit den parametrierten Tests und angepasster Ausgabe ist zwar nett...mehr aber auch nicht.

Kannst du uns da mal ein kleines Beispiel basteln welches bei dir nicht funktioniert und das wir ausfuehren koennen?

Bei mir hat JUnit5 mit System.out immer einfach funktioniert.
Ich hätte da etwas gehabt, jetzt leider nicht mehr, weil ich zwischendurch wieder auf das alte JUnit4 zurückgegangen bin. Mal sehen, vielleicht fliegt hier noch eine alte Version davon herum...
 

mihe7

Top Contributor
Deshalb verstehe ich deren Daseinsberechtigung auch nicht, da ein simples System.out.print.n(":)"); das auch kann.
Strukturierte Ausgabe. Wenn Tools z. B. zur Erstellung von Dokumentation oder Testberichten auf den Namen eines Tests zurückgreifen, dann kann man halt ggf. aussagekräftigere Ausgaben erhalten. Ich verfahre damit ganz einfach wie mit allem anderen auch: so lange ich kein Problem habe, brauche ich auch keine Lösung 😉
 

Ähnliche Java Themen


Oben