我正在尝试为我的多线程代码创建一个单元测试。
我当前的代码片段是这样的:
verify(someObject, times(2)).someMethod(captor.capture());
List<SomeObject> list = captor.getAllValues();
assertThat(list.get(0)).isEqualTo(...
assertThat(list.get(1)).isEqualTo(...
现在,someMethod 在两个单独的线程中调用,因此捕获参数的顺序是不确定的。我想知道是否有办法在没有任何特定顺序的情况下断言这些论点。
当然,我可以编写一个自定义比较器并事先对列表进行排序,但我想知道是否有比这更简单的方法。
谢谢!
只需检查列表是否包含元素,与顺序无关:
assertThat(list, hasItem(...));
assertThat(list, hasItem(...));