如何附加 Scala Intellij 调试器进行测试?

How do you attach the Scala Intellij debugger for tests?

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


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

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

sbt -jvm-debug 5005

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

那时候你只需要运行这个配置和设置断点。之后只是 运行 test 在 SBT 控制台内。

考虑通过 IntelliJ 的 sbt shell:

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


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