最佳答案
Mockito 参数匹配器(如 any
、 argThat
、 eq
、 same
和 ArgumentCaptor.capture()
)的行为与 Hamcrest 匹配器非常不同。
Mockito 匹配器经常导致 InvalidUseOfMatchersException,即使在使用匹配器很久之后才执行的代码中也是如此。
Mockito 匹配器受制于奇怪的规则,例如,如果给定方法中的一个参数使用匹配器,则只要求对所有参数使用 Mockito 匹配器。
当重写 Answer
或使用 (Integer) any()
等时,Mockito 匹配器会导致 NullPointerException。
使用 Mockito 匹配器以某些方式重构代码可能会产生异常和意外行为,并且可能完全失败。
为什么 Mockito 匹配器被设计成这样,它们是如何实现的?