Mockito使用和实现原理解析
2024-01-10 16:21:08
?mockito平时大家都要使用过,例如如下一个简单的示例;
此示例中,使用spy了一个类,然后对于这个类的getName方法,指定了返回值“1111”。后续代码的实际使用中,getName返回值就别替换成了“11111”;? ? ?
在解析原理的过程中,我对于上述的代码,简单划分了几个阶段,方便大家理解
1. createMock阶段
????????createMock阶段,主要是通过bytebuddy创建一个目标类的子类,并且对于子类设置拦截器。返回子类的mock实例对象
2. mock阶段
????????mock阶段,主要是在当前线程开启一个mock过程,然后对于mock过程设置一个返回值,同时返回值对应的还有方法。
3. 调用阶段
????????调用阶段,根据当前调用的方法,使用createMock阶段的拦截器,找到mock阶段的返回值
下面是具体的每个阶段的执行链,方便后续大家继续跟踪源代码
createMock阶段
mock的过程,实际上是通过使用bytebuddy创建了一个目标类的子类,并且拦截监听所有的方法到对应的拦截器MockMethodInterceptor
mock阶段,when
Mock阶段thenReturn
调用阶段
核心代码:org.mockito.internal.creation.bytebuddy.SubclassBytecodeGenerator#mockClass
文章来源:https://blog.csdn.net/qq_27886773/article/details/135502353
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!