JUnit线程测试

3

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

但是,当我将客户端作为 JUnit 运行而将服务器作为独立应用程序运行时,客户端线程会在几秒钟内停止运行。

我不知道为什么会出现这样不同的行为。


当线程死亡时,您是否会收到任何异常? - Thilo
而奇怪的是,同样的东西作为独立应用程序也能正常工作。 - Aryan
线程是如何“死亡”的?你怎么知道? - Volker Stolz
我正在Eclipse中运行这个程序。大约一两秒后,我会看到JUnit运行成功的提示,并且可以在Eclipse控制台上看到进程结束。 - Aryan
1个回答

8
当JUnit运行器终止时,所有生成的线程等都会被杀死(因为它很可能在单独的JVM实例中运行)。
这里有一篇(相当旧的)描述你遇到的问题的文章(推荐使用的GroboUtils库似乎已经被放弃了很长时间)。还有另一篇最近的文章,使用新的Java并发框架提供了更现代的解决方案。
后一种解决方案的要点是,它通过执行器运行线程,该执行器通过Future发布运行结果。而Future.get是阻塞的,直到线程完成任务,自动保持JUnit测试活动。您可以尝试将此技巧适应于您的情况。

是的,我想也是这样,但我该怎么实现我想要的呢? 谢谢回复 :) - Aryan
嘿,彼得,你说得没错。运行线程终止了所有生成的线程。我刚刚在测试块中加入了50秒的休眠时间,然后我也得到了其余的响应 :) 谢谢 :) - Aryan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接