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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。