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

a0zr77ik  于 2023-08-05  发布在  其他
关注(0)|答案(4)|浏览(117)

我想知道是否有一些单元测试框架能够轻松编写多线程测试?
我会想象这样的情况:n个线程同时调用特定测试方法m次。在所有测试线程完成后,将调用Assert方法,其中应验证一些约束。
我目前的方法是在junit测试方法中创建Thread对象,在每个run()方法中手动循环真实的的测试用例,等待所有线程,然后验证Assert。但是使用这个,我为每个测试都有一个大的样板代码块。
你的经历是什么?

v64noz0r

v64noz0r1#

ConTest,也有GroboUtils
我在很多年前使用过GroboUtils,它完成了这项工作。ConTest是较新的,并且是我现在首选的起点,因为它不只是依赖于试错法,而是强制线程的特定交织,提供确定性测试。相比之下,GroboUtils MultiThreadedTestRunner只是运行测试,并希望调度程序产生导致线程错误出现的交错。
编辑:另请参阅ConcuTest,它也强制交织,并且是免费的。

5vf7fwbs

5vf7fwbs2#

还有比尔·普格(Bill Pugh)的《MultithreadedTC》。

5f0d552i

5f0d552i3#

仅仅使用并发库就可以简化代码。您可以将样板代码转换为一个方法。
比如说

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

}

字符串

but5z9lq

but5z9lq4#

http://www.awaitility.org/是异步代码单元测试中最现代的Assert测试。

相关问题