IntelliJ IDEA 调试器在调试 Maven 测试时跳过断点

IntelliJ IDEA debugger skips breakpoints when debugging Maven tests

提问人:kaqqao 提问时间:7/4/2011 更新时间:5/10/2023 访问量:17991

问:

我正在尝试在IntelliJ IDEA中调试Maven测试。当我打开 IDEA 的 Maven 项目视图并右键单击测试目标时,我得到了一个调试它的选项。单击它可执行此目标,但执行永远不会在任何断点处停止。我错过了什么?

谢谢。

单元测试 Maven-2 JUnit Intellij-IDEA

评论

4赞 6/26/2013
使用以下命令在IntelliJ(或Eclipse)外部运行应用程序:然后连接到正在运行(但正在等待)的实例,正如@milan建议的那样(+1)对我有用。mvn -Dmaven.surefire.debug test
0赞 wptoux 2/4/2017
似乎 Idea 调试器对 junit 项目有很好的支持。我创建了一个启用了 junit 的调试配置,一切正常。

答:

0赞 carlspring 7/4/2011 #1

依赖项的源与二进制代码不匹配。确保您使用的是相同的来源。

评论

0赞 kaqqao 7/5/2011
不。。。不幸的是,事情并没有那么简单。这是关于 Maven 运行测试的单独进程。如果阻止分叉,调试器将停止,但由于某种原因,它始终停止,即使我尝试运行而不是调试。
24赞 milan 12/1/2011 #2

一种解决方案是使用远程调试:

  1. 配置 SureFire 插件:<debugForkedProcess>true</debugForkedProcess>;

  2. 运行测试(将等待远程调试器连接)

  3. 在 IntelliJ 中创建并运行远程调试配置(将命中断点);要连接到的端口是 5005。

评论

5赞 wwerner 2/14/2020
甚至比在 pom 中更改配置更简单:从 shell 运行 w/。-Dmaven.surefire.debug
2赞 Joseph K. Strauss 2/24/2022
更简单:.这将自动打开调试器,而无需在 IntelliJ 中运行新的调试器配置-DforkCount=0
33赞 defectus 4/7/2013 #3

只需禁用分叉模式 - 在您的 pom 文件中(在 project/build/plugins 部分下)中类似这样的东西:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14</version>
<configuration>
    <forkMode>never</forkMode>
</configuration>
</plugin>

评论

17赞 Marco Biscaro 8/14/2014
forkMode已弃用。请改用。<forkCount>0</forkCount>
2赞 djangofan 2/5/2019 #4

如果您使用 maven failsafe 而不是 surefire 运行单元测试,则调试器不会停止,您必须手动运行故障保护调试器命令行,然后 intellij 将能够在断点处停止。我不确定使用故障保护选项是否解决了这个问题。<forkMode>never</forkMode>

正如我在这里描述的那样:https://github.com/djangofan/maven-failsafe-debug-example

0赞 Codebling 5/10/2023 #5

在命令行上,设置环境变量起作用。在 linux 中,您可以在命令行上执行此操作:MAVEN_OPTS=-DforkCount=0

MAVEN_OPTS=-DforkCount=0 MAVEN_DEBUG_ADDRESS=0.0.0.0:8000 mvnDebug test