android - ArgumentCapture 不起作用

标签 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
);

我检查了这个函数的原型(prototype)。

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

错误是因为 Object...formatArgs 或 Integer 与 int 不匹配吗?

最佳答案

使用

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

关于android - ArgumentCapture 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40099082/

相关文章:

android - 从某一帧开始循环 Lottie 动画

java - 如何自动化测试以检查 JSF 应用程序的正确性?

python - 用 Python 编写单元测试 : How do I start?

java - 使用 PowerMockito 模拟接口(interface)

java - 异常 : mockito wanted but not invoked, 实际上与此模拟的交互为零

android - 如何找出哪些设备与我的 Android 应用程序兼容(不兼容)?

Java、Android 字体质量似乎很低

android - 显示附加到 textview 的进度对话框

java - 我的 Junit 测试不工作

unit-testing - mockito when() 调用是如何工作的?