【问题标题】:How to debug breakpoints in multithreaded applications tested with JUnit?如何在使用 JUnit 测试的多线程应用程序中调试断点?
【发布时间】:2021-03-16 18:10:25
【问题描述】:

使用 JUnit5 测试多线程应用程序,自动化测试运行良好。 但是在手动调试中,环境行为异常,我想知道如何让它发挥应有的作用。


IntelliJ(使用 Java 虚拟机 + 其调试器)有两个在断点处挂起的通用选项:“All”= 所有线程,或“Thread”= 仅当前线程。

(哪个线程是“当前线程”可能不清楚并导致问题,但这已单独讨论,请参阅 stackOverflow 上的其他问题。)

想要的行为:

  • 暂停特定线程的断点,和 JUnit 测试环境,这是 IDE 调试的一部分。

实际行为:

  • 所有线程都被挂起,即使是那些应该运行的线程
  • 或者只挂起一个线程,JUnit @AfterEach/@AfterAll 注解杀死当前调试的资源,终止应该运行的线程等

如何实现通缉行为?


(环境: AdoptOpenJDK8, AdoptOpenJDK11 in Java 9 mode, IntelliJ 2020.3, JUnit-Jupiter 5.7.0)

【问题讨论】:

    标签: java multithreading debugging intellij-idea junit


    【解决方案1】:

    您可以使用两个断点。您真正感兴趣的一个和单元测试中的另一个(在调用被测代码和清理之间的某个地方)。将两者都设置为仅挂起当前线程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多