我的应用程序中有客户端和服务器线程。当我将这些应用程序作为独立应用程序运行时,这些线程可以正常通信。
但是当我将客户端作为JUnit和服务器作为独立运行时,客户端线程会在几秒钟内死掉。
我无法得到,为什么会出现这种不同的行为。
答案 0 :(得分:8)
当JUnit运行器终止时,所有生成的线程等也被终止(因为它很可能在单独的JVM实例中运行)。
这是一个(相当古老的)article describing the problem you experienced(它推荐的GroboUtils库似乎很久以前就被抛弃了)。和another, recent one,使用新的Java并发框架的更现代的解决方案。
后一种解决方案的要点是它通过执行程序运行线程,执行程序通过Future
发布运行结果。并且Future.get
阻塞,直到线程完成任务,自动保持JUnit测试活动。您可以根据自己的情况调整此技巧。