问题很简单...
// Class Under Test
list.add(1);
dependency.handleList(list);
list.clear();
list.add(2);
dependency.handleList(list);
//Test Code
verify(mockDepenency, times(2)).handleList(argumentCaptor.capture());
List<Collection<Integer>> list = argumentCaptor.getAllValues();
assertEquals(1, list.get(0).get(0)); // fails value is 2
原因似乎与 Mockito 捕捉论点的方式有关。也就是说,它通过引用捕获所有参数。这似乎与这个问题有关。
理想情况下,我希望能够在捕获时指定副本/克隆,但我看不到这样做的方法。有没有我想念的替代品?