我正在编写单元测试来测试各个 Java 类的线程安全性。我使用 Mocktio 来设置测试并验证多线程环境中的交互是否按照预期完成,并且线程不会干扰业务预期。
Mockito 模拟在这种情况下是线程安全的吗?模拟方法是否可以被多个线程调用并且调用次数能够正确计数?
小智 8
不完全是。
在并行线程中调用方法并在Mockito.verify(..)中计算时间可能会在每次运行中产生不同的结果。
假设我们正在测试以下调用:
...
someListOfSize20.parallelStream().forEach(testedObject::methodToBeTested);
...
Run Code Online (Sandbox Code Playgroud)
并尝试验证:
Mockito.verify(testedObject, times(20)).methodToBeTested(any());
Run Code Online (Sandbox Code Playgroud)
这往往会因每次运行的调用次数不同而失败。
这是关于此问题的(仍然开放)票证: https ://github.com/mockito/mockito/issues/1037
| 归档时间: |
|
| 查看次数: |
4321 次 |
| 最近记录: |