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

标签 java multithreading unit-testing junit

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

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

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

你的经历是什么?

最佳答案

ConTest , 还有 GroboUtils .

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

编辑:另见 ConcuTest这也强制交错并且是免费的。

关于java - 如何编写多线程单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3256064/

相关文章:

c# - 是否建议为每个客户端请求创建线程?

java - 用不同的参数模拟相同的方法

python - 如何在 Python (2.7) 单元测试中参数化 setUpClass()

java - LinkedList 作为 Hashtable 的值

java - 不同硬件上的线程

java - 为 bufferedReader 选择另一个目录中的文件

c# - .Net中的Dictionary在并行读写时是否有可能导致死锁?

unit-testing - 困惑: leave out functional tests that cover same ground as unit tests?

java - 静态变量、模式和 Android 性能

java - 如何在具有其他 Java 版本的计算机上安装 Java 8