how to debug maven surefire test more easily (using eclipse as debug server)
I'm using maven / surefire / eclipse to write some code and later test / debug it.
Standard way to do it is by using maven.surefire.debug maven property. By default, when this property is enabled, maven starts listening on port 5005 and I can attach to the debugged process using remote debugger. When the test finishes remote debugger disconnects from the server.
This process involves two steps when done using 开发者_如何学Goin eclipse:
- Run maven
- Connect using remote launch configuration
What I would like to achieve is to reduce this to:
- Run maven
I have found, that setting the maven.surefire.debug property to some remote debug options will change the remote debug behaviour. Thus when I specify i.e.
-Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=5005"
then build will try to connect to my eclipse process listening on port 5005. This way I invert the default client/server roles of maven and eclipse.
However there is one big problem with this approach. It doesn't give me anything, as after maven build finishes, eclipse stops listening on server port. This is the part that I don't understand. When I connect as debug client from eclipse to for example WebLogic server, it allows me to connect / disconnect freely as many times as I want.
Anyone knows if this is normal, or maybe I need to specify some additional options to make debugging maven tests easier?
Simple way:
1. Open the Debug As > .. dialogue box
2. In the goal text box, give
-DforkMode=never test
3. Run the debug project
Bit late in contributing but thought it was worthwhile still.
In Eclipse debug configuration, create "Maven build" debug config:
Goals = -Dmaven.surefire.debug test
Profiles = myconfigprofile,weblogic
or for a specific TestSuite:
Goals = -Dmaven.surefire.debug -Dtest=com.myorg.mypkg/MyTestSuite.java test
Profiles = myconfigprofile,weblogic
N.B. Don't put the props in "JRE/jvm arguments" as this doesn't seem to pause
Create additional "Remote Java Application" config:
Host = localhost
Port = 5005
Running/ debugging your mvn build will stop and listen on 5005 by default.
Starting your remote debug config will attach.See also: http://maven.apache.org/plugins/maven-surefire-plugin/examples/debugging.html
If you're using m2eclipse, why not simply right-click then Debug > Maven test?
if you are using Maven 2.0.8+, then it will be very simple,
Please refer my answer.
Maven build debug in Eclipse
精彩评论