Mockito的ArgumentCaptor:一个方法名称,两个方法定义

时间:2012-11-07 22:48:01

标签: java unit-testing mockito

我正在尝试编写一个测试,用于验证可以接受两个不同参数的相同方法名称的调用。我最初尝试的代码段:

ArgumentCaptor<Label> labelCaptor = ArgumentCaptor.forClass(Label.class);
Mockito.verify(fakeSheet, Mockito.times(4)).addCell(labelCaptor.capture());

ArgumentCaptor<Number> numberCaptor = ArgumentCaptor.forClass(Number.class);
Mockito.verify(fakeSheet, Mockito.times(2)).addCell(numberCaptor.capture());

但是,Mockito抱怨​​addCell在第一次验证时运行了6次。所以,我试过这个:

ArgumentCaptor<Label> labelCaptor = ArgumentCaptor.forClass(Label.class);
Mockito.verify(fakeSheet, Mockito.times(6)).addCell(labelCaptor.capture());

ArgumentCaptor<Number> numberCaptor = ArgumentCaptor.forClass(Number.class);
Mockito.verify(fakeSheet, Mockito.times(6)).addCell(numberCaptor.capture());

哪个运行,但在ArgumentCaptors中给我所有6个参数调用,将我期望的所有6个对象的信息存储到两个ArgumentCaptor实例中。

这感觉非常错误 - 当然,我可以用它来写一个测试,但是我的俘虏没有区分这两个类的事实感觉很脏。有没有办法让Mockito区分这两者?

0 个答案:

没有答案