【问题标题】:How do you attach the Scala Intellij debugger for tests?您如何附加 Scala Intellij 调试器进行测试?
【发布时间】:2019-12-15 02:01:27
【问题描述】:

配置 IntelliJ 调试器以附加到由 sbt 管理的 scala Play 测试需要哪些步骤?


在 IntelliJ 2019 中,您可以使用 sbt shell 中的调试按钮将调试器附加到 sbt run 命令,而无需更改配置。
但是,调试器不会附加到test 命令。

【问题讨论】:

  • 例如,下载starter project并使用默认值导入intelliJ。启动“Sbt Shell”,启用调试,添加一些断点,然后运行test。

标签: scala debugging intellij-idea playframework sbt


【解决方案1】:

首先,您需要使用-jvm-debug [port] 运行您的 SBT,例如:

sbt -jvm-debug 5005

然后打开对话框Run/Debug Configuration 并单击Remote。 在新创建的配置上设置正确的主机和端口(通常是localhost 和5005)并单击应用。

然后,您只需要运行此配置并设置断点。之后,只需在 SBT 控制台中运行 test。

【讨论】:

  • 已编辑 - 这工作谢谢!注意 - 如果使用 Play Framework,您还必须将 Test / fork := false 添加到 build.sbt。
  • 我设法执行了命令sbt -jvm-debug 5005 并附加了Debug remote,但是当我使用test 执行测试时,断点不会停止该过程。甚至被验证为工作断点。有什么想法吗?
【解决方案2】:

考虑通过 IntelliJ 的 sbt shell 附加调试器:

  1. 在 sbt 项目 工具中window 选中复选框Use sbt shell for builds
  2. 打开sbt shell工具窗口(通常位于底部)
  3. 点击Attach debugger to sbt shell按钮(图标看起来像个bug)
  4. 在状态栏中应该显示Connected to the target VM(见下图)
  5. 在测试中设置断点
  6. 在sbt shell工具窗口中执行test命令
  7. Debug sbt shell 窗口应该打开并且执行应该在第一个断点处停止。


请注意,如果您使用类似 OP 的 Play,则默认情况下 Play 在 forked JVM 中运行测试,因此要使上述技术起作用,请尝试在 build.sbt 中设置 Test / fork := false。

【讨论】:

  • 谢谢,但是在带有 sbt 1.2.8 (mac) 的 IntelliJ 2019.2 中,这不起作用。在第 3 步之前,我必须单击绿色图标以“重新启动 sbt shell”,然后单击错误图标。但是,shell 不显示步骤 4 中的文本。Screenshot 的构建设置和文本。
  • @Jethro 步骤 4 中的文本未显示在 sbt shell 中。它在屏幕底部的细状态行中短暂显示。无需重新启动 sbt shell。我的机器也是mac,Intellij和sbt版本一样。
  • @Jethro 状态栏可以通过View | Appearance | Status Bar 启用。无需重新安装 IntelliJ。
  • @Jethro 你是在fork JVM,也就是build.sbt中有Test / fork := true吗?
  • 我设法将调试器附加到 sbt shell,但是当我执行测试时,断点并没有停止进程。有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-16
  • 2016-02-08
  • 2014-08-31
  • 2014-02-02
  • 2017-12-30
  • 2014-09-17
  • 2021-05-17
相关资源
最近更新 更多