调试器不会在断点处停止(Arquillian、TomEE、OpenJPA Enhancer、Maven、JUnit 和 IntelliJ)

Debugger doesn't stop at break points (Arquillian, TomEE, OpenJPA Enhancer, Maven, JUnit, and IntelliJ)

我正在编写一个使用 JAX-RS (Apache CXF) 和 JPA (Apache OpenJPA) 并使用 TomEE+ 部署的 Web 应用程序。我已经开始通过 arquillian-tomee-embedded maven 依赖项使用 Arquillian 来对我的 REST 服务进行单元测试。

当我使用 IntelliJ 启动 Maven 构建生命周期的测试阶段时,一切正常。 运行它是我的 JPA 实体上的 OpenJPA 增强器,启动了单元测试,我能够成功调用我的 Web 服务,并且它们能够成功访问数据库。

不幸的是,如果我在调试模式下启动测试阶段,一切仍然有效,但 none 我的断点命中。我必须怎么做才能解决这个问题?

我找到了一个乏味的解决方法。我可以在调试模式下右键单击每个单元测试和 运行,调试器将命中断点...但我必须事先手动 运行 OpenJPA 增强器才能使 JPA 代码工作。

有两种可能: 1) 代码/断点不可访问/未在当前上下文中调用。 2) 您不是 运行正在调试模式下的应用程序。

确保您正在调试应用程序而不是 运行 它像 "Run As..."

考虑到您使用的是 Eclipse,运行 -> Debug As -> <-Your Target Application->

还要确保在添加断点的任何地方都可以访问这些行。

当您 "launch the test phase in debug mode " 时,这意味着 Maven 在调试模式下运行,而不是调试您的应用程序。您不能通过 Maven 调试您的应用程序。 Maven 使用 surefire-plugin 运行测试,不能使用断点和调试。

我以前遇到过 IntelliJ 调试没有遇到断点的问题。您可能会幸运地禁用 JUnit 插件并重新启动 IDEA。