Java 使用-Dmaven.surefire.debug和-DforkMode=never运行Maven测试

Java 使用-Dmaven.surefire.debug和-DforkMode=never运行Maven测试,java,maven,Java,Maven,我正在与Maven和Surefire插件v合作一个项目。2.11. 要运行单个测试,我正在使用-Dtest=TestClass#testMethod和-DforkMode=never(没有DforkMode=never我无法运行测试,因为对象堆空间不足)。我已经习惯了,它对我很好。 所以我在跑步: mvn -Dtest=TestClass#testMethod test -DforkMode=never 测试运行正常 但是当我跑步的时候 mvn -Dtest=TestClass#testMe

我正在与Maven和Surefire插件v合作一个项目。2.11. 要运行单个测试,我正在使用
-Dtest=TestClass#testMethod
-DforkMode=never
(没有
DforkMode=never
我无法运行测试,因为对象堆空间不足)。我已经习惯了,它对我很好。 所以我在跑步:

mvn -Dtest=TestClass#testMethod test -DforkMode=never
测试运行正常

但是当我跑步的时候

mvn -Dtest=TestClass#testMethod -Dmaven.surefire.debug test -DforkMode=never
它只是跳过了调试“等待”部分,测试正在执行(我无法使用IDE连接)。
mvn-Dmaven.surefire.debug test
对于其他项目(我不需要关心fork模式)非常适合我


知道为什么
forkMode=never
-Dmaven.surefire.debug
的组合不能按预期工作吗?

属性
maven.surefire.debug
正在设置surefire插件的
debugForkedProcess
参数

此参数的值如下所示:

将调试器附加到分叉的JVM。如果设置为“true”,进程将挂起并等待调试器连接到端口5005。如果设置为其他字符串,则该字符串将附加到argLine,从而允许您配置任意可调试性选项(而不会覆盖通过argLine参数指定的其他选项)

因此,它只会调试分叉的JVM,这就解释了为什么当测试没有分叉时它不工作。它无法设置已在运行的非分叉JVM进程的调试

使用
mvnDebug

相反,您可以做的是使用,它允许您调试maven进程本身——由于您的测试没有被分叉,所以也可以使用它


i、 e.您将执行
mvnDebug-Dtest=TestClass#testMethod test-DforkMode=never
而不是
mvn-Dtest=TestClass#testMethod test-DforkMode=never
。默认情况下,当它启动maven时,它将在端口8000上侦听。

您不能只使用-DskipTests运行吗?不。。。我想运行测试,而不是跳过它。我想用debug和fork模式运行单个测试。不过,我误解了问题-dsspecific\u method=method\u namecool!我不知道,调试器只能连接到分叉的JVM。现在正在工作,谢谢你的帮助