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.

JavaRocky
quelle

Antworten:

25

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

Debug-Ziel

Colin Hebert
quelle
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)

Hover Ruan
quelle
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.

Henryk Konsek
quelle
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.

DesertBlade
quelle
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.

Robin Loxley
quelle
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!

David DRM
quelle
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