【发布时间】: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