在 IntelliJ 调试器中隔离单个 ScalaTest 测试而不使用断点

Posted

技术标签:

【中文标题】在 IntelliJ 调试器中隔离单个 ScalaTest 测试而不使用断点【英文标题】:Isolating individual ScalaTest test in IntelliJ debugger without using breakpoints 【发布时间】:2022-01-12 22:39:59 【问题描述】:

由于某种原因,如果我选择一个单独的 ScalaTest 测试在 IntelliJ 中运行,它不会运行(没有运行测试,只有设置代码)。此外,在我的 ScalaTest 文件中设置的断点不会被命中,因此我无法在感兴趣的测试开始时设置断点(主代码中的断点会被命中)。

我想这样做,以便我只能在我尝试调试的测试开始时启用 log-when-hit 断点,因为否则日志记录会太吵,并且会大大减慢调试会话的速度。

如何解决这两个 IntelliJ 问题?

默认情况下,IntelliJ 控制台无法读取输入,因此在默认 IntelliJ 配置中,旧的“按任意键继续...”技术将不起作用。

我尝试创建一个 CountdownLatch,暂停程序并使用 Evaluate Expression 将 CountdownLatch 设置为 0,但我从 IntelliJ 收到错误消息“无法评估:线程未在断点处暂停”。

【问题讨论】:

您如何选择要运行的单个测试?只有在调试而不是运行时才会触发断点。 @Tim 我实际上无法选择单个测试,因为当我使用 - new utils ... 而不是 - ... 时,IntelliJ 看不到这些块内的单独测试。我能做的是尝试通过在 IntelliJ 中单击它们旁边的绿色播放图标来运行这些块,但实际上除了测试类设置代码之外,它实际上并没有运行任何东西。 【参考方案1】:

我最终只是注释掉了所有其他测试(这并不像听起来那么简单,因为它们是分层结构的)。然而,这并不理想,因为测试设置代码(我不感兴趣)在启用 log-when-hit 断点的情况下运行,所以它很吵而且很慢。

【讨论】:

您可以编辑问题,将更多信息放在答案中确实令人困惑。 这是一个有效的解决方案。 不,确实不是,这是一个(非常明显的)解决方法。 我是提出这个问题的人。这对我来说是一个有效的解决方案。 是的,它看起来确实很可疑。如果这是一个真实的问题,请按照指南中的说明在(例如示例代码)中提供更多详细信息。

以上是关于在 IntelliJ 调试器中隔离单个 ScalaTest 测试而不使用断点的主要内容,如果未能解决你的问题,请参考以下文章

使用 simple-build-tool (sbt) 和 IntelliJ 调试 Scala 代码

IntelliJ:Scala 测试中的断点不会被命中

在IntelliJ中调试sbt项目

在 IntelliJ 中评估返回值的表达式

Scala插件与Intellij 2018.3.3不兼容:无法在“新建项目”中选择Scala

IntelliJ 在创建 Scala 项目后在 build.sbt 中给出“无法解析符号”的错误