Mockito ArgumentCaptor在多线程代码中捕获多次

时间:2016-03-16 20:17:34

标签: multithreading mockito

我正在尝试为我的多线程代码创建一个单元测试。

我目前的代码段是这样的:

verify(someObject, times(2)).someMethod(captor.capture());
List<SomeObject> list = captor.getAllValues();
assertThat(list.get(0)).isEqualTo(...
assertThat(list.get(1)).isEqualTo(...

现在someMethod在两个独立的线程中被调用,因此捕获的参数的顺序是不确定的。我想知道是否有办法在没有任何特定顺序的情况下断言这些参数。

当然我可以写一个自定义Comparator并事先对列表进行排序,但我想知道是否有比这更简单的方法。

谢谢!

1 个答案:

答案 0 :(得分:2)

只需检查列表是否包含元素,与订单无关:

assertThat(list, hasItem(...));
assertThat(list, hasItem(...));