我想知道是否有一些单元测试框架能够轻松编写多线程测试?我会想象这样的情况:n个线程同时调用特定测试方法m次。在所有测试线程完成后,将调用Assert方法,其中应验证一些约束。我目前的方法是在junit测试方法中创建Thread对象,在每个run()方法中手动循环真实的的测试用例,等待所有线程,然后验证Assert。但是使用这个,我为每个测试都有一个大的样板代码块。你的经历是什么?
v64noz0r1#
有ConTest,也有GroboUtils。我在很多年前使用过GroboUtils,它完成了这项工作。ConTest是较新的,并且是我现在首选的起点,因为它不只是依赖于试错法,而是强制线程的特定交织,提供确定性测试。相比之下,GroboUtils MultiThreadedTestRunner只是运行测试,并希望调度程序产生导致线程错误出现的交错。编辑:另请参阅ConcuTest,它也强制交织,并且是免费的。
5vf7fwbs2#
还有比尔·普格(Bill Pugh)的《MultithreadedTC》。
5f0d552i3#
仅仅使用并发库就可以简化代码。您可以将样板代码转换为一个方法。比如说
public static void runAll(int times, Runnable... tests) { }
字符串
but5z9lq4#
http://www.awaitility.org/是异步代码单元测试中最现代的Assert测试。
4条答案
按热度按时间v64noz0r1#
有ConTest,也有GroboUtils。
我在很多年前使用过GroboUtils,它完成了这项工作。ConTest是较新的,并且是我现在首选的起点,因为它不只是依赖于试错法,而是强制线程的特定交织,提供确定性测试。相比之下,GroboUtils MultiThreadedTestRunner只是运行测试,并希望调度程序产生导致线程错误出现的交错。
编辑:另请参阅ConcuTest,它也强制交织,并且是免费的。
5vf7fwbs2#
还有比尔·普格(Bill Pugh)的《MultithreadedTC》。
5f0d552i3#
仅仅使用并发库就可以简化代码。您可以将样板代码转换为一个方法。
比如说
字符串
but5z9lq4#
http://www.awaitility.org/是异步代码单元测试中最现代的Assert测试。