在 IntelliJ 中,如何调试 Maven 测试目标?
Posted
技术标签:
【中文标题】在 IntelliJ 中,如何调试 Maven 测试目标?【英文标题】:In IntelliJ, how do i debug a maven test goal? 【发布时间】:2011-04-16 15:13:11 【问题描述】:使用 intellij 和 maven pom 文件,我如何调试在 maven 测试目标内运行的测试?
当我直接在代码中运行它们时,它会抱怨缺少配置文件,我已经在 intellij 的 Maven 项目中打勾。
【问题讨论】:
Same question for Integration Tests with Failsafe in IntelliJ 【参考方案1】:http://maven.apache.org/plugins/maven-surefire-plugin/examples/debugging.html
当surefire插件版本-DforkMode=never 当surefire插件版本>= 2.14时:使用-DforkCount=0
在 IDEA 中,打开您的运行/调试配置,在 Runner
选项卡中,添加 fork 选项 -DforkCount=0
【讨论】:
这对我有用。我正在使用以下命令来调试 Idea 10 中的测试目标。 在我的多模块项目中,这是 Intellij 中唯一适合我的选项。 使用 IDEA 11,我在 Maven 项目中发现,我必须右键单击要测试的模块的测试。这创建了一个运行/调试配置。然后编辑这个新配置,单击运行器选项卡并在 VM 选项中添加 -DforkMode=never。单击确定。设置断点,然后单击调试图标运行新的调试配置。以上的组合,非常感谢您的提示。 @MarkM 断点在 IJ13 中不受我使用这种方法的影响。 值得注意的是新版本的surefire插件(2.14+)使用mvn -DforkCount=0 test
,下面在其他(令人困惑的)答案中提到了这一点,但它们可能会被遗漏。【参考方案2】:
我使用以下选项执行测试:
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=右键单击您的目标和“调试 [您的目标]”(在您的情况下为测试目标)怎么样?
【讨论】:
啊,没想到。星期五下午太晚了:D 谢谢。 假设你想使用断点,这个答案是不够的。请参阅 Hover 的答案。【参考方案4】:-DforkMode=never
不再起作用,现在在 SureFire 中已弃用。
在使用surefire插件2.14+时使用-DforkCount=0
。
【讨论】:
Surefire 文档说要改用forkCount
和reuseForks
,所以我认为上面的意思是“改用-DforkCount=0
”。我试过-DforkCount=0
(reuseForks
没有分叉就没有关系),但我的断点从未跳闸。它确实与-DforkMode=never
(Maven 3.2.1,IDEA 13.1.2)一起旅行。【参考方案5】:
问题已得到解答。但只是分享我自己的经验。 选择的答案没有解决我的问题。 我的代码有多个模块。
傻瓜的回复确实为我的问题带来了宝贵的见解。
我有两个解决方案,
1. 使用您的 IDEA,添加 VM 选项 -DforkMode=never
;必须以调试模式运行它。
2. 设置远程调试,指定socket,此时不需要forkMode。
这只是我所经历的总结。
【讨论】:
【参考方案6】:Colin Hebert 的解决方案对我也不起作用。但幸运的是,我找到了一种简单的方法来调试测试,方法是右键单击测试方法旁边出现的绿色三角形:
Java test class example
希望对你有帮助!
【讨论】:
我对此评论的贡献是一种通过在 IntelliJ 上打开窗口进行调试的方法。类的代码不重要。【参考方案7】:mvn clean verify -DforkCount=0 使用surefire插件时
【讨论】:
以上是关于在 IntelliJ 中,如何调试 Maven 测试目标?的主要内容,如果未能解决你的问题,请参考以下文章
IntelliJ IDEA 调试器在调试 Maven 测试时跳过断点
IntelliJ 在 Docker 中调试 Java 应用程序
在 Windows 10 上使用 Intellij IDEA 在 WSL 2 中运行和调试 Java
如何解决IntelliJ IDEA 中Maven 报错 com.google.inject.CreationException: Unable to create injector, see the