争论的Mockito匹配器(如any
,argThat
,eq
,same
,和ArgumentCaptor.capture()
)表现非常不同,从Hamcrest匹配器.
Mockito匹配器经常导致InvalidUseOfMatchersException,即使在使用任何匹配器后执行很长时间的代码中也是如此.
Mockito匹配器受到奇怪的规则的影响,例如,如果给定方法中的一个参数使用匹配器,则只需要对所有参数使用Mockito匹配器.
当覆盖Answer
s或使用(Integer) any()
等时,Mockito匹配器可能会导致NullPointerException .
使用Mockito匹配器以某种方式重构代码可能会产生异常和意外行为,并且可能完全失败.
为什么Mockito匹配器是这样设计的,它们是如何实现的?
鉴于以下Mockito声明:
when(mock.method()).thenReturn(someValue);
Run Code Online (Sandbox Code Playgroud)
考虑到mock.method()语句将返回值传递给when(),Mockito如何为mock创建代理?我想这会使用一些CGLib的东西,但有兴趣知道这是如何在技术上完成的.
在Eclipse中,当检查变量并且Eclipse能够显示其值时,它通过调用toString()来实现.
IntelliJ IDEA没有这样做.可以告诉它吗?
谢谢.