IntelliJ - Maven - Jump to failed Tests

werdas34

Bekanntes Mitglied
Guten Tag,

wenn ich mvn clean install in IntelliJ ausführe, und der Checkstyle-Check fehlschlägt, dann springt IntelliJ für mich in die Klasse wo der Fehler auftrat. Und ich habe ein Menü wo ich andere Checkstyle Fehler im selben Modul (?) beheben kann und springe sofort hin.

Leider habe ich bisher keine Möglichkeit gefunden in IntelliJ, wenn ein/mehrere Unit Tests fehlschlagen beim mvn clean install, sofort in die Testklasse/-methode zu springen.
Gibt es da eine Möglichkeit? Oder wie macht ihr das um möglichst schnell den entsprechenden Test zu finden?

Kann man Maven dazu bringen, wenn ein Modul den Checkstyle Check/Unit Test/etc nicht besteht, dennoch die anderen Module zu prüfen und nicht zu skippen, um auf einmal alle Fehler parat zu haben?

mfg werdas34
 
1. Möglichkeit, Plugins zu konfigurieren
Bei sowas immer schauen, welches Plugin denn verantwortlich ist. Dann die Dokumentation des Plugins prüfen um zu sehen, was für Konfigurationen möglich sind, damit ein build bei einem Fehler im entsprechenden Plugin nicht abbricht.

Für Unit-Tests dürftest Du das surfire plugin nutzen:
Maven Surefire Plugin – Introduction (apache.org)
Maven Surefire Plugin – surefire:test (apache.org) zeigt dann: testFailureIgnore als Setting, das Du zu true setzen kannst.

Für checkstyle vermutlich das maven checkstyle plugin:
Apache Maven Checkstyle Plugin – Introduction
Dort findet sich dann unter Goals, dass es u.a. die beiden Ziele check und checkstyle gibt. Das check bricht dabei ab ("potentially failing the build") und das checkstyle baut den report ohne Abbruch.

Falls Du aber nicht von Unit Tests sondern von Integrationstests sprechen solltest, dann ist es evtl. auch das Maven Failsafe Plugin:
Maven Failsafe Plugin – Introduction (apache.org)
Da solltest Du mehrere goals ansteuern. Das integration-test sollte nur die Tests ausführen. Das verify macht die Prüfung. Daher kannst Du also das verify weglassen und schon sollte es nicht mehr abbrechen.

Das wäre dann der Weg über die Konfiguration der Plugins.

2. Optionen bei Start von Maven
Maven selbst hat aber auch noch ein paar Möglichkeiten. Schau Dir dazu einfach einmal einen maven Aufruf mit -h an (also mvn -h oder wenn du den Wrapper nutzt: mvnw -h):
-fae oder --fail-at-end könnte evtl. alles ausführen und erst am Ende abbrechen. Aber das bezieht sich auf alle Plugins, also auch ein Compile-Fehler bricht dann nicht ab.
-fn oder --fail-never - Da wird nie abgebrochen und am Ende ist es immer erfolgreich.
Das könnte evtl. Sinn machen, wenn Du es nur für Dich mal haben willst aber Du die Konfiguration nicht anpassen willst da es dann auch den Build Server betreffen würde oder so (und Profile sind evtl. auch nicht erwünscht).
 
Danke. Das werde ich ausprobieren.
Das bezieht sich alles auf den zweiten Teil des Posts oder? Also wie ich Maven dazu bringe keine Module zu skippen, wenn ein Error auftritt.

Wie machst du das in IntelliJ oder allgemein bei einem mvn clean install wenn ein Tests fehlschlägt. Scrollst du dann im Output solange hoch bis du die Testklasse siehst? Oder wie kann man das schneller die entsprechende Testklasse finden?
 
In IntelliJ rufe ich die Tests nicht über ein maven Befehl selbst auf sondern über den TestRunner von IntelliJ. Also einfach auf src/test/java ein Rechtsclick und ein "Run All Tests" aufgerufen. Dann hast Du auch die bessere Übersicht über die durchgeführten Tests und so.
 
Ja ok verstehe. Würde mir auch reichen, wenn das auf der Arbeit funktionieren würde.
Wir haben ein Multi Maven Module Projekt und die meisten Test sind in der entsprechenden Struktur der anderen Module nur das noch ein test Modul dazwischen ist.
parent
-> modul a
-> modul b
-> test -> modul a
-> test -> modul b
Und wenn ich alle Unit Tests ausführen möchte und alle Module mit Tests markiere und dann Run All Tests ausführe, was meines Wissens laut IntellliJ gehen sollte, dann bekomme ich einen Error.
Bin mir gerade nicht sicher welcher Fehler, müsste da nochmal nachschauen, aber sowas wie "Hauptklasse kann nicht gefunden werden.".

Oder führst du nur die Tests aus in dem Modul(en) in denen du zuletzt gearbeitet hast?
Ich wurde gerne alle Tests ausführen, deswegen auch der Umweg über Maven, weils das über IntelliJ nicht funktioniert.
 

Zurück
Oben