3

我的应用程序中有客户端和服务器线程。当我将这些应用程序作为独立应用程序运行时,这些线程可以正常通信。

但是,当我将客户端作为 JUnit 运行并将服务器作为独立运行时,客户端线程会在几秒钟内死亡。

我不明白,为什么会有如此不同的行为。

4

1 回答 1

8

当 JUnit 运行程序终止时,所有生成的线程等也会被杀死(因为它很可能在单独的 JVM 实例中运行)。

这是一篇(相当旧的)文章,描述了您遇到的问题(虽然它推荐的 GroboUtils 库似乎很久以前就被放弃了)。另一个,最近的一个,使用新的 Java 并发框架提供了一个更现代的解决方案。

后一种解决方案的要点是它通过执行程序运行线程,执行程序通过Futures 发布运行结果。并且Future.get在线程完成任务之前一直处于阻塞状态,自动保持 JUnit 测试处于活动状态。您也许可以根据您的情况调整此技巧。

于 2012-04-23T08:26:46.093 回答