如何编写multithreadingunit testing?

我想知道是否有一些unit testing框架能够轻松编写multithreading测试?

我想象的是:通过n个线程同时调用m次的特殊测试方法。 在完成所有测试线程之后,将调用一个断言方法,其中应该validation一些约束。

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

你有什么经历?

有ConTest ,还有GroboUtils 。

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

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

FindBugs的Bill Pugh也有MultithreadedTC 。

只使用并发库可以简化代码。 您可以将锅炉板代码转换为一种方法。

就像是

public static void runAll(int times, Runnable... tests) { }