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

Unit testing IntelliJ IDEA调试器在调试Maven测试时跳过断点,unit-testing,maven-2,junit,intellij-idea,Unit Testing,Maven 2,Junit,Intellij Idea,我正在尝试用IntelliJ IDEA调试Maven测试。当我打开IDEA的Maven项目视图并右键单击测试目标时,我得到了一个调试它的选项。单击它将执行此目标,但执行不会在任何断点处停止。我错过了什么 谢谢。您的依赖项源代码与二进制代码不匹配。确保使用相同的源。一种解决方案是使用远程调试: 配置surefire插件:true 运行测试(将等待远程调试器连接) 在IntelliJ中创建并运行远程调试配置(将命中断点);要连接的端口是5005 只需在pom文件中禁用forked模式(在projec

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


谢谢。

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

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

  • 配置surefire插件:
    true

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

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

  • 只需在pom文件中禁用forked模式(在project/build/plugins部分下):

    
    org.apache.maven.plugins
    maven surefire插件
    2.14
    从未
    
    如果您使用maven failsafe而不是surefire运行单元测试,那么调试器将不会停止,您必须手动运行failsafe调试器命令行,然后intellij将能够在断点上停止。我不确定在故障保护上使用
    never
    选项是否能解决此问题


    正如我在这里所描述的:

    不。。。不幸的是,事情并没有那么简单。这是关于Maven在其中运行测试的独立进程。如果您阻止分叉,调试器将停止,但由于某种原因,它总是停止,即使我尝试运行而不调试。使用以下命令在IntelliJ(或Eclipse)外部运行应用程序:
    mvn-Dmaven.surefire.debug test
    ,然后连接到正在运行(但正在等待)的实例,如@milan所建议的(+1)对我来说很有用。看来Idea调试器对junit项目有很好的支持。我创建了一个启用junit的调试配置,一切正常。
    forkMode
    不推荐使用。改为使用
    0
    。甚至比在pom中更改配置更简单:从shell运行w/
    -Dmaven.surefire.debug
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.14</version>
    <configuration>
        <forkMode>never</forkMode>
    </configuration>
    </plugin>