在IntelliJ中,我如何调试maven测试目标?

Jav*_*cky 74 testing maven-2 intellij-idea

使用intellij和maven pom文件,我如何在maven测试目标内调试测试?

当我直接在代码中运行它时,它会抱怨缺少配置文件,我在intellij的Maven项目中打勾.

Hov*_*uan 168

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

在IDEA中,以调试模式运行测试" mvn -DforkMode=never test"

更新:打开运行/调试配置,在"Runner"选项卡中添加-DforkMode=never

在此输入图像描述

(注意@mikeapr4:使用更新版本的surefire插件(2.14+)mvn -DforkCount=0 test)

  • 使用IDEA 11,我发现在Maven项目中,我必须右键单击我想要测试的模块的测试.这创建了运行/调试配置.然后编辑此新配置,单击runner选项卡并在VM Options中添加-DforkMode = never.点击确定.设置断点,然后单击调试图标以运行新的调试配置.以上的组合,所以感谢您的提示. (24认同)
  • 值得注意的是,新版本的surefire插件(2.14+)使用`mvn -DforkCount = 0 test`,这在下面的其他(令人困惑的)答案中提到,但它们可能会被遗漏. (7认同)

Hen*_*sek 27

我使用以下选项执行测试:

mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=6666 -Xnoagent -Djava.compiler=NONE" test
Run Code Online (Sandbox Code Playgroud)

...然后使用远程调试器连接到Maven.


Col*_*ert 25

右键单击您的目标和"调试[您的目标]"(在您的情况下是测试目标)怎么样?

调试目标

  • 假设你想使用断点,这个答案是不够的.请参阅Hover的答案. (19认同)

小智 14

-DforkMode=never 它不再起作用,现在已在SureFire中弃用.

使用-DforkCount=0surefire插件2.14+时请使用.

  • 这有效,但这个答案肯定令人困惑. (2认同)
  • Surefire 文档说使用`forkCount` 和`reuseForks` 代替,所以我认为上面的意思是说,“使用`-DforkCount=0` 代替。” 我尝试了 `-DforkCount=0`(如果没有叉子,`reuseForks` 应该无关紧要),但我的断点从未跳闸。它确实使用`-DforkMode=never`(Maven 3.2.1,IDEA 13.1.2)跳闸。 (2认同)

Rob*_*ley 9

问题已得到解答.但只是为了分享我自己的经验.选定的答案并没有解决我的问题.我的代码有多个模块.

傻瓜的回复确实为我的问题带来了宝贵的见解.

我有两个解决方案,1.使用您的IDEA,添加VM选项 -DforkMode=never ; 必须使用调试模式运行它.2.设置远程调试,指定套接字,在这种情况下,不需要forkMode.

这只是我所经历过的总结.