单元测试多线程应用程序

Vla*_*mir 5 junit multithreading unit-testing

有没有人对多线程应用程序的单元测试有任何建议或知道任何框架?

Bor*_*vić 5

不要测试多线程应用程序。重构代码以消除在不同线程中完成的工作之间的耦合。然后单独测试。


Jus*_*tin 5

通常,您不会对多线程应用程序的并发性进行单元测试,因为单元测试不可靠且不可重现 - 由于并发错误的性质,通常不可能编写始终失败或成功的单元测试,因此单元测试并发代码通常不会进行非常有用的单元测试。

相反,您可以像平常一样对应用程序的每个单线程组件进行单元测试,并依靠负载测试会话来识别并发问题。

也就是说,有一些用于测试并发应用程序的实验性负载测试框架,例如Microsoft CHESS - CHESS 重复运行给定的单元测试,并系统地探索并发测试的每种可能的交错。这使您的单元测试可靠且可重复。

但目前 CHESS 仍处于实验阶段(可能无法与 JVM 一起使用)——目前坚持负载测试以消除并发问题。