如何编写多线程单元测试?

2022-09-03 14:53:39

我想知道是否有一些单元测试框架能够轻松编写多线程测试?

我会想象这样的事情:通过n个线程同时调用一个特殊的测试方法,持续m次。完成所有测试线程后,将调用应验证某些约束的断言方法。

我目前的方法是在 junit 测试方法中创建 Thread 对象,在每个 run() 方法中手动循环真正的测试用例,等待所有线程,然后验证断言。但是使用这个,我为每个测试都有一个大的样板代码块。

你有什么经验?


答案 1

ConTest,还有GroboUtils

多年前,我使用过GroboUtils,它完成了这项工作。ConTest是较新的,并且将是我现在首选的起点,因为仪器不仅仅是依靠反复试验,而是强制线程的特定交错,从而提供确定性测试。相比之下,GroboUtils MultiThreadedTestRunner只是运行测试,并希望调度程序产生一个交错,导致线程错误出现。

编辑:另请参阅ConcuTest,它也强制交错并且是免费的。


答案 2

还有Bill Pugh的MultithreadTC,FindBugs成名。


推荐