java - Mockito,验证多个方法调用之一

标签 java junit mockito

我正在使用mockito编写Junit测试,我想验证是否进行了方法调用。问题是有多个使用不同参数的方法调用,我只想验证其中之一。

Eg : Below are 3 method calls from my code
Metrics.emit(PhoneFailCount,0);
Metrics.emit(PaymentFailCount,1);
Metrics.emit(AddresseFailCount,1);

如何验证

Metrics.emit(PaymentFailCount,1) 至少被调用一次。

如果我直接这样做 verify(Metrics).emit(PaymentFailCount, 1) 它会抛出错误,说参数不同!因为它试图与 Metrics.emit(PhoneFailCount,0) 匹配

我尝试使用 ArgumentCaptor,但无法同时捕获两个参数

谢谢

最佳答案

您可以使用 ArgumentCaptor 来实现此目的。检查下面的代码。这应该有效

ArgumentCaptor<String> captor1 = ArgumentCaptor.forClass(String.class);

ArgumentCaptor<Integer> captor2 = ArgumentCaptor.forClass(Integer.class);

verify(Metrics, times(3)).emit(captor1.capture(), captor2.capture);

List<Integer> values = captor2.getAllValues;
//assertIf values have values 0,1 and 1

关于java - Mockito,验证多个方法调用之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47425033/

相关文章:

java - TransactionalEventListener 是否总是接收事件

java - Camunda 与替代品的比较(Activiti)

junit - 异常的Java单元测试

android - 如果发生 HttpException,Retrofit 和 RxJava 的单元测试永远不会完成

java - 如何用Java模拟MongoDB存储库方法

java - Mockito,如何验证被测试类的方法是否被调用?

java - 有效使用 JavaOptional.ofNullable

Java - 使用 Scanner 的编译错误

android - 在项目 'testDebug' 中找不到名称为 ':module' 的任务

java - 使用所述类的抽象版本模拟通用类