26

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

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

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

  1. 运行行家
  2. 使用远程启动配置连接

我想要实现的是将其减少到:

  1. 运行行家

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

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

然后 build 将尝试连接到监听端口 5005 的我的 Eclipse 进程。这样我反转了 Maven 和 Eclipse 的默认客户端/服务器角色。

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

任何人都知道这是否正常,或者我可能需要指定一些额外的选项来使调试 maven 测试更容易?

4

4 回答 4

23

简单的方法:

1. Open the Debug As > .. dialogue box
2. In the goal text box, give
     -DforkMode=never test
3. Run the debug project
于 2012-03-15T12:18:42.753 回答
21

贡献有点晚,但认为仍然值得。

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

目标 = -Dmaven.surefire.debug 测试

配置文件 = myconfigprofile,weblogic

或对于特定的 TestSuite:

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

配置文件 = myconfigprofile,weblogic

注意不要将道具放在“JRE/jvm 参数”中,因为这似乎没有暂停

创建额外的“远程 Java 应用程序”配置:

主机 = 本地主机

端口 = 5005

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

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

另请参阅: http ://maven.apache.org/plugins/maven-surefire-plugin/examples/debugging.html

于 2011-05-18T08:43:45.880 回答
2

如果您使用的是 m2eclipse,为什么不直接右键单击Debug > Maven test呢?

于 2010-09-24T17:01:40.347 回答
0

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

请参考我的回答。

Eclipse 中的 Maven 构建调试

于 2013-09-04T14:07:25.110 回答