我想知道是否有一些单元测试框架能够轻松编写多线程测试?
我想象的是: n个线程同时调用m次特殊测试方法。在完成所有测试线程之后,将调用一个断言方法,其中应该验证一些约束。
我目前的方法是在junit测试方法中创建Thread对象,手动循环每个run()方法中的实际测试用例,等待所有线程然后验证断言。但是使用这个,我为每个测试都有一个大的样板代码块。
您有什么经历?
答案 0 :(得分:11)
有ConTest,还有GroboUtils。
多年前我使用过GroboUtils,它完成了这项工作。 ConTest是更新的,现在是我首选的起点,因为仪器不仅仅依靠试验和错误,而是强制线程的特定交错,提供确定性测试。相比之下,GroboUtils MultiThreadedTestRunner只是运行测试,并希望调度程序产生一个交错,导致线程错误出现。
编辑:另请参阅ConcuTest,它也强制进行交错并且是免费的。
答案 1 :(得分:4)
FindBugs的Bill Pugh也有MultithreadedTC的名声。
答案 2 :(得分:0)
使用并发库可以简化代码。您可以将锅炉板代码转换为一种方法。
像
这样的东西public static void runAll(int times, Runnable... tests) {
}