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


82

使用intellij和Maven Pom文件,如何调试在Maven测试目标内运行的测试?

当我直接在代码中运行它们时,它会抱怨某些有关配置文件丢失的信息,这些信息已在intellij的Maven Projects中打勾。

Answers:



182

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

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

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

在此处输入图片说明

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


那对我有用。我使用下面的命令来调试理念10.测试的目标
Swapnonil慕克吉

1
在我的多模块项目中,这是Intellij中对我有用的唯一选项。
nash 2012年

24
使用Maven项目中的IDEA 11,我必须右键单击要测试的模块的测试。这创建了一个运行/调试配置。然后编辑此新配置,单击运行器选项卡,然后在VM Options中添加-DforkMode = never。单击确定。设置一个断点,然后单击调试图标以运行新的调试配置。上述各项的结合,因此感谢您的提示。
foolshat

使用此方法时,IJ13中不尊重@MarkM断点。
StephenBoesch 2014年

9
值得注意的是,使用了surefire插件(2.14+)的较新版本,mvn -DforkCount=0 test下面在其他(令人困惑的)答案中对此进行了提及,但可能会忽略它们。
mikeapr4 2015年

28

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

mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=6666 -Xnoagent -Djava.compiler=NONE" test

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


您是否设法使log4j / logging工作?我什至包括了-Dlog4j.configuration = <log4j.properties的路径>,但未打印日志记录语句。
StephenBoesch 2014年

18

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

-DforkCount=0在使用surefire插件2.14+时,请改用。


1
Surefire文档说使用forkCountreuseForks代替,所以我认为以上是说“使用-DforkCount=0代替”。我试过了-DforkCount=0reuseForks如果没有前叉也没关系),但是我的断点从未跳过。它确实与-DforkMode=never(Maven 3.2.1,IDEA 13.1.2)一起跳闸。
mmindenhall,2014年

9

问题已经回答。但是只是分享我自己的经验。选择的答案不能解决我的问题。我的代码有多个模块。

愚人节的回答确实为我的问题带来了宝贵的见识。

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

这只是我经历过的总结。


1

来自Colin Hebert的解决方案对我也不起作用。但是幸运的是,我发现通过右键单击测试方法旁边的绿色三角形可以轻松调试测试:

Java测试类示例

希望那对您有帮助!


1
请发布该课程的代码,请勿使用图片。
常识

1
我对此评论的贡献是一种通过在IntelliJ上打开窗口进行调试的方法。该类的代码并不重要。
David DRM
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.