ArgumentCapture不起作用

时间:2016-10-18 03:35:13

标签: android unit-testing mockito

我试图验证我的mockResource调用getQuantityString()传递正确的数量。

使用getQuantityString()的实际代码

resources.getQuantityString(R.plurals.SUCCESS,5,5);

在测试中:

@Captor private ArgumentCaptor<Integer> firstIntegerCaptor;
verify(resources).getQuantityString(isA(int.class),firstIntegerCaptor.capture(), any());

我在下面遇到错误。

org.mockito.exceptions.verification.junit.ArgumentsAreDifferent: 
Argument(s) are different! Wanted:
resources.getQuantityString(
    isA(int),
    <Capturing argument>,
    <any>
);

Actual invocation has different arguments:
resources.getQuantityString(
    2131165186,
    5,
    5
);

我检查了这个功能的原型。

public String getQuantityString(int id, int quantity, Object... formatArgs)

因为Object而出错吗... formatArgs或Integer不匹配int?

1 个答案:

答案 0 :(得分:1)

使用

verify(resources).getQuantityString(anyInt(),firstIntegerCaptor.capture(),  Matchers.<Object>anyVararg());