我正在使用Maven和Surefire插件v.2.11开发一个项目.要运行我使用一个测试-Dtest=TestClass#testMethod和-DforkMode=never(不DforkMode=never,我不能跑,因为缺乏空间对象堆测试).我已经习惯了,它对我很好.所以我在跑:
mvn -Dtest=TestClass#testMethod test -DforkMode=never
Run Code Online (Sandbox Code Playgroud)
并且测试运行正常.
但是当我跑步的时候
mvn -Dtest=TestClass#testMethod -Dmaven.surefire.debug test -DforkMode=never
Run Code Online (Sandbox Code Playgroud)
它只是跳过调试"等待"部分并且正在执行测试(我无法使用IDE连接).
mvn -Dmaven.surefire.debug test对我来说很适合其他项目(我不需要关心fork模式).
任何想法为什么组合forkMode=never和-Dmaven.surefire.debug不能按预期工作?
该属性maven.surefire.debug正在设置debugForkedProcesssurefire插件的参数.
该参数的文档内容如下:
将调试器附加到分叉的 JVM.如果设置为"true",则进程将挂起并等待调试器在端口5005上附加.如果设置为其他字符串,则该字符串将附加到argLine,允许您配置任意可调试性选项(不覆盖其他选项)通过argLine参数指定的选项).
因此它只会调试分叉的JVM,这解释了为什么它在测试没有分叉时不起作用.它无法设置已运行的非分叉JVM进程的调试.
使用 mvnDebug
您可以做的是使用mvnDebug,它允许您调试maven进程本身 - 并且因为您的测试也没有被分叉.
即而不是mvn -Dtest=TestClass#testMethod test -DforkMode=never你会执行mvnDebug -Dtest=TestClass#testMethod test -DforkMode=never.默认情况下,它会在启动maven时侦听端口8000.
| 归档时间: |
|
| 查看次数: |
7513 次 |
| 最近记录: |