Maven-Surefire-Tests mit Eclipse/M2E debuggen

Wenn ein Testcase, welcher im Eclipse durchläuft, im Maven-Build fehlschlägt, ist es hilfreich, diesen im Eclipse zu debuggen. Auch Tests, deren Umgebung mittels Maven bereit gestellt wird, können so in der IDE debuggt werden. Dieser Artikel zeigt, wie dies mit einfachen Mitteln möglich ist.

Voraussetzungen:

  • Eclipse (in dem Fall Neon)
  • M2E-Plugin
  • Maven-Projekt, welches sich über „Debug As -> Maven Test“ starten lässt

Führt man das Projekt über „Debug As -> Maven Test“ aus, startet Eclipse zwar Maven in einer Debug-Session, da Surefire aber eine eigene VM startet, bekommt Eclipse von den Breakpoints in den Testcases nichts mit.

bildschirmfoto_2016-09-22_10-49-25

Hilfreich ist, das man mit dem Parameter „argLine“ beliebige Kommandozeilen-Parameter an die von Surefire gestartete JVM übergeben kann. Die korrekten Parameter, die die JVM in den Debug-Modus versetzen, sind:

-Xdebug -Xnoagent -Djava.compile=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005

Diese können über die Debug-Configuration an Maven übergeben werden:

-DargLine=“-Xdebug -Xnoagent -Djava.compile=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005″

bildschirmfoto_2016-09-22_10-52-33

Führt man den Build nun im Debug-Modus aus, hält die JVM am Breakpoint an. Praktischer Weise erkennt Eclipse den entsprechenden Hinweis in der Konsole und verlinkt ihn. Ein Klick auf den Link „Listening for transport dt_socket at address: 5005“ öffnet den Eclipse-Debugger und verbindet ihn direkt mit der Surefire-JVM:

bildschirmfoto_2016-09-22_10-55-26

Hier kann der Test wie gewohnt debuggt werden.

Veröffentlicht unter Java

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert