Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在用JUnit测试的多线程应用程序中调试断点?_Java_Multithreading_Debugging_Intellij Idea_Junit - Fatal编程技术网

Java 如何在用JUnit测试的多线程应用程序中调试断点?

Java 如何在用JUnit测试的多线程应用程序中调试断点?,java,multithreading,debugging,intellij-idea,junit,Java,Multithreading,Debugging,Intellij Idea,Junit,使用JUnit5测试多线程应用程序时,自动测试运行良好。 但是在手动调试中,环境会出现错误,我想知道如何让它按应有的方式运行 IntelliJ(使用Java VM及其调试器)有两个在断点上挂起的常规选项:“All”=所有线程,或“Thread”=仅当前线程 (哪个线程是“当前线程”可能不清楚并导致问题,但这已单独讨论,请参阅stackOverflow上的其他问题。) 通缉行为: 挂起特定线程的断点,以及作为IDE调试一部分的JUnit测试环境 实际行为: 或者所有线程都被挂起,即使是那些

使用JUnit5测试多线程应用程序时,自动测试运行良好。 但是在手动调试中,环境会出现错误,我想知道如何让它按应有的方式运行


IntelliJ(使用Java VM及其调试器)有两个在断点上挂起的常规选项:“All”=所有线程,或“Thread”=仅当前线程

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

通缉行为:

  • 挂起特定线程的断点,以及作为IDE调试一部分的JUnit测试环境
实际行为:

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



(环境:在Java 9模式下采用OpenJDK8、采用OpenJDK11、IntelliJ 2020.3、JUnit Jupiter 5.7.0)

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