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

如何更轻松地调试maven surefire测试(使用eclipse作为调试服务器),eclipse,maven-2,debugging,surefire,Eclipse,Maven 2,Debugging,Surefire,我正在使用maven/surefire/eclipse编写一些代码,然后对其进行测试/调试 标准方法是使用maven.surefire.debug maven属性。默认情况下,启用此属性后,maven开始侦听端口5005,我可以使用远程调试器连接到已调试的进程。测试完成后,远程调试器将与服务器断开连接 在eclipse中使用时,此过程包括两个步骤: 跑马文 使用远程启动配置进行连接 我希望实现的目标是将其简化为: 跑马文 我发现,将maven.surefire.debug属性设置为某些远程调试选

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

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

在eclipse中使用时,此过程包括两个步骤:

  • 跑马文
  • 使用远程启动配置进行连接
  • 我希望实现的目标是将其简化为:

  • 跑马文
  • 我发现,将maven.surefire.debug属性设置为某些远程调试选项将更改远程调试行为。因此,当我指定,即

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

    然后构建将尝试连接到我的eclipse进程,监听端口5005。通过这种方式,我反转了maven和eclipse的默认客户机/服务器角色

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


    有人知道这是否正常,或者我需要指定一些额外的选项来简化maven测试的调试吗

    如果您使用的是m2eclipse,为什么不简单地用鼠标右键单击然后调试>Maven test

    贡献得有点晚,但认为还是值得的

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

    目标=-Dmaven.surefire.debug测试

    Profiles=myconfigprofile,weblogic

    或者对于特定的测试套件:

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

    Profiles=myconfigprofile,weblogic

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

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

    主机=本地主机

    端口=5005

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

    启动远程调试配置将附加

    另见: 简单方法:

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

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

    请参考我的答案


    这是正确的行为。WebSphere是一个服务器,因此它会持续侦听调试器。测试运行并在特定时刻完成执行(与maven会话一起)。您还可以多次断开并连接到Maven,但只要测试的执行持续一段时间。@Henryk Konsek-这就是为什么我想让eclipse成为服务器,并让测试引擎连接到它。我已经尝试过了,但它什么也没做。我需要任何东西来配置它吗?另一方面,“作为junit测试进行调试”工作正常。事实上,这对我来说已经足够了。调试>Maven测试真的什么都做不了。mateusz.fiolka的方式似乎是唯一适合我的方式,运行测试然后启动远程调试器真的很烦人,直到我需要先运行应用程序,然后再连接到它。我的问题是找到一种一步到位的方法。但是,我不确定当前的Java远程调试体系结构是否可行。很抱歉。可能是点错了。现在改为向上投票。哦现在不行。对不起,不用担心。。。我只是好奇。我得到了一个失败的执行目标org.apache.maven.plugins:maven-surefire-plugin:2.4.2:test(默认测试)对项目x:有测试失败。你搜索过这个问题吗?请看。我接受这个答案,尽管这种方法有风险(如这里所解释的:)。以这种方式调试运行的类将与Maven共享类路径,这可能会导致一些问题。“[警告]自版本2.14以来,参数forkMode已被弃用。请改用forkCount和ReuseWorks”。这就是maven现在所说的。不,这仍然是两个步骤——从控制台运行,从eclipse运行。