在 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= 但没有打印日志记录。【参考方案3】:

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

【讨论】:

啊,没想到。星期五下午太晚了:D 谢谢。 假设你想使用断点,这个答案是不够的。请参阅 Hover 的答案。【参考方案4】:

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

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

【讨论】:

Surefire 文档说要改用forkCountreuseForks,所以我认为上面的意思是“改用-DforkCount=0”。我试过-DforkCount=0reuseForks 没有分叉就没有关系),但我的断点从未跳闸。它确实与-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

IntelliJ IDEA 记学习笔 - Tomcat 启动调试,支持:Maven profiles 区分环境

IntelliJ IDEA 记学习笔 - Tomcat 启动调试,支持:Maven profiles 区分环境