我正在编写单元测试,以测试各个Java类的线程安全性。我使用Mocktio进行测试,并验证多线程环境中的交互是否按预期完成,并且线程不会干扰业务预期。
在这种情况下,Mockito是否模拟线程安全?嘲笑的方法能否被许多线程调用,并且调用将被正确计数?
答案 0 :(得分:1)
是的。引用mockito documentation。
(...),您可以让多个线程在共享的模拟程序上调用方法以在并发条件下进行测试。
答案 1 :(得分:0)
不完全是。
在并行线程中调用方法并在 Mockito.verify(..) 中计算时间可能会在每次运行中产生不同的结果。
假设我们正在测试以下调用:
...
someListOfSize20.parallelStream().forEach(testedObject::methodToBeTested);
...
并尝试验证:
Mockito.verify(testedObject, times(20)).methodToBeTested(any());
这往往会因每次运行的调用次数不同而失败。
这是关于这个的(仍然开放的)票: https://github.com/mockito/mockito/issues/1037