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

Posted

技术标签:

【中文标题】IntelliJ IDEA 调试器在调试 Maven 测试时跳过断点【英文标题】:IntelliJ IDEA debugger skips breakpoints when debugging Maven tests 【发布时间】:2011-09-28 05:36:22 【问题描述】:

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

谢谢。

【问题讨论】:

Idea 调试器似乎对 junit 项目有很好的支持。我创建了一个启用了 junit 的调试配置,一切正常。 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

    配置surefire插件:<debugForkedProcess>true</debugForkedProcess>;

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

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

【讨论】:

比在 pom 中更改配置更简单:从 shell 运行 w/ -Dmaven.surefire.debug【参考方案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>

【讨论】:

forkMode 已弃用。请改用&lt;forkCount&gt;0&lt;/forkCount&gt;【参考方案4】:

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

【讨论】:

不……不幸的是,事情没那么简单。这是关于 Maven 运行测试的单独进程。如果您阻止分叉,调试器将停止,但由于某种原因它总是停止,即使我尝试运行而不是调试。

以上是关于IntelliJ IDEA 调试器在调试 Maven 测试时跳过断点的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA 中的 JSP 调试

使用 Intellij Idea 进行远程调试

在 AppCode 中调试 Intellij Idea 插件

无法在 IntelliJ IDEA 中打开调试器端口

Idea IntelliJ远程调试教程

Intellij IDEA 调试时的备用源