Debugging Surefire tests on Jenkins with eclipse

Today I faced an interesting issue. One of my unit tests passed on my local machine and it failed on our Jenkins server. So I decided to debug the unit test remotely to understand what the problem was. As Jenkins reference mentions you can use the typical

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=5001

setting to enable remote debug when starting a job on Jenkins. However, if you take a look at Maven Surefire’s page on debugging tests it has a bit slightly different usage that you should use

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

to enable remote debugging. To get this working with Jenkins, you should note that you should provide Surefire’s setting on Goal option of “Build” section of the job configuration page. If you do it on MAVEN_OPTS in the advanced section of the job build section, eclipse will not be able to get the breakpoints.