如何更轻松地调试maven surefire测试(使用eclipse作为调试服务器)

时间:2010-09-24 14:59:49

标签: eclipse maven-2 debugging surefire

我正在使用maven / surefire / eclipse编写一些代码,然后再进行测试/调试。

标准的方法是使用maven.surefire.debug maven属性。默认情况下,启用此属性后,maven将开始侦听端口5005,并且我可以使用远程调试器附加到已调试的进程。当测试完成远程调试器与服务器的连接时。

在eclipse中使用时,这个过程涉及两个步骤:

  1. 运行maven
  2. 使用远程启动配置进行连接
  3. 我想要实现的目标是将其减少为:

    1. 运行maven
    2. 我发现,将maven.surefire.debug属性设置为某些远程调试选项将改变远程调试行为。因此,当我指定即。

        

      -Dmaven.surefire.debug =“ - Xdebug -Xrunjdwp:transport = dt_socket,server = n,address = 5005”

      然后build将尝试连接到我的eclipse进程,监听端口5005.这样我就可以反转maven和eclipse的默认客户端/服务器角色。

      然而,这种方法存在一个大问题。它没有给我任何东西,因为在maven构建完成后,eclipse停止在服务器端口上侦听。这是我不理解的部分。 当我作为调试客户端从eclipse连接到例如WebLogic服务器时,它允许我根据需要自由连接/断开连接。

      任何人都知道这是否正常,或者我是否需要指定一些其他选项以使调试maven测试更容易?

4 个答案:

答案 0 :(得分:21)

简单方法:

1. Open the Debug As > .. dialogue box
2. In the goal text box, give
     -DforkMode=never test
3. Run the debug project

答案 1 :(得分:19)

贡献迟到但认为这还值得。

在Eclipse调试配置中,创建“Maven build”调试配置:

  

目标= -Dmaven.surefire.debug测试

  个人资料= myconfigprofile,weblogic

或针对特定的TestSuite:

  

目标= -Dmaven.surefire.debug -Dtest = com.myorg.mypkg / MyTestSuite.java test

  个人资料= myconfigprofile,weblogic

N.B。不要把道具放在“JRE / jvm参数”中,因为这似乎没有暂停

创建其他“远程Java应用程序”配置:

  

Host = localhost

  端口= 5005

默认情况下,运行/调试mvn构建将停止并侦听5005。

启动远程调试配置将附加。

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

答案 2 :(得分:2)

如果您正在使用m2eclipse,为什么不只是右键单击,然后调试> Maven测试

答案 3 :(得分:0)

如果您使用的是Maven 2.0.8+,那么它将非常简单,

请参考我的回答。

Maven build debug in Eclipse