Wie debugge ich in IntelliJ ein Maven-Testziel?


82

Wie kann ich Debug-Tests unter Verwendung von Intellij- und Maven-Pom-Dateien innerhalb des Maven-Testziels ausführen?

Wenn ich sie direkt im Code ausführe, beschwert es sich über fehlende Profile, die ich in den Maven-Projekten von Intellij angekreuzt habe.

Antworten:


25

Was ist mit einem Rechtsklick auf Ihr Ziel und "Debuggen [Ihres Ziels]" (in Ihrem Fall das Testziel)?

Debug-Ziel


Ahh hat nicht daran gedacht. An einem Freitagnachmittag zu spät: D Danke.
JavaRocky

23
Angenommen, Sie möchten Haltepunkte verwenden, reicht diese Antwort nicht aus. Siehe stattdessen die Antwort von Hover.
David Groomes

182

http://maven.apache.org/plugins/maven-surefire-plugin/examples/debugging.html

Führen Sie Ihren Test in IDEA im Debug-Modus " mvn -DforkMode=never test" aus

Aktualisiert : Öffnen Sie Ihre Run / Debug-Konfiguration und fügen Sie auf der Registerkarte "Runner" hinzu-DforkMode=never

Geben Sie hier die Bildbeschreibung ein

(Bemerkung von @ mikeapr4: Neuere Versionen des todsicheren Plugins (2.14+) verwenden mvn -DforkCount=0 test)


Das hat bei mir funktioniert. Ich benutze den folgenden Befehl, um das Testziel in Idee 10 zu debuggen.
Swapnonil Mukherjee

1
In meinem Multi-Modul-Projekt war dies die einzige Option, die innerhalb von Intellij für mich funktioniert hat.
Nash

24
Mit IDEA 11, das ich in Maven-Projekten gefunden habe, musste ich mit der rechten Maustaste auf den Test für das Modul klicken, das ich testen wollte. Dadurch wurde eine Run / Debug-Konfiguration erstellt. Bearbeiten Sie dann diese neue Konfiguration, klicken Sie auf die Registerkarte Runner und fügen Sie -DforkMode = nie in den VM-Optionen hinzu. OK klicken. Legen Sie einen Haltepunkt fest und klicken Sie auf das Debug-Symbol, um die neue Debug-Konfiguration auszuführen. Eine Kombination der oben genannten, also danke für die Tipps.
Dummkopf

@ MarkM-Haltepunkte werden in IJ13 für mich mit diesem Ansatz nicht berücksichtigt.
Javadba

9
Es mvn -DforkCount=0 testist erwähnenswert, dass neuere Versionen des todsicheren Plugins (2.14+) verwendet werden. Dies wird unten in anderen (verwirrenden) Antworten erwähnt, aber sie könnten übersehen werden.
Mikeapr4

28

Ich führe Tests mit folgenden Optionen durch:

mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=6666 -Xnoagent -Djava.compiler=NONE" test

... und dann mit dem Remote-Debugger eine Verbindung zu Maven herstellen.


Haben Sie es geschafft, log4j / logging zum Laufen zu bringen? Ich habe sogar -Dlog4j.configuration = <Pfad zu log4j.properties> eingefügt, aber die Protokollierungsanweisungen werden nicht gedruckt.
Javadba

18

-DforkMode=never funktioniert nicht mehr, es ist jetzt in SureFire veraltet.

Verwenden Sie -DforkCount=0stattdessen, wenn Sie das todsichere Plugin 2.14+ verwenden.


1
Surefire-Dokumente sagen, zu verwenden forkCountund reuseForksstattdessen, also denke ich, dass die oben genannten sagen sollten: "Verwenden Sie -DforkCount=0stattdessen." Ich habe es versucht -DforkCount=0( reuseForkssollte keine Rolle spielen, wenn es keine Gabeln gibt), aber mein Haltepunkt ist nie ausgelöst worden. Es löst mit -DforkMode=never(Maven 3.2.1, IDEA 13.1.2) aus.
mmindenhall

9

Die Frage wurde beantwortet. Aber nur um meine eigenen Erfahrungen zu teilen. Die ausgewählte Antwort hat mein Problem nicht gelöst. Mein Code hat mehrere Module.

Die Antwort von Foolshat brachte wertvolle Einblicke in mein Problem.

Ich habe zwei Lösungen: 1. Verwenden Sie Ihre IDEA, indem Sie eine VM-Option hinzufügen -DforkMode=never. Muss im Debug-Modus ausgeführt werden. 2. Richten Sie ein Remote-Debugging ein und geben Sie den Socket an. In diesem Fall ist forkMode nicht erforderlich.

Es ist nur eine Zusammenfassung dessen, was ich durchgemacht habe.


1

Die Lösung von Colin Hebert funktioniert auch für mich nicht. Glücklicherweise habe ich einen einfachen Weg gefunden, um den Test zu debuggen, indem ich mit der rechten Maustaste auf das grüne Dreieck neben der Testmethode klicke:

Beispiel für eine Java-Testklasse

Ich hoffe das hilft dir!


1
Bitte posten Sie den Code dieser Klasse und verwenden Sie kein Bild.
gesunder Menschenverstand

1
Was ich mit diesem Kommentar beisteuere, ist eine Möglichkeit zum Debuggen, indem ein Fenster auf IntelliJ geöffnet wird. Der Code der Klasse ist unwichtig.
David DRM
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.