# mymockito **Repository Path**: dowler168/mymockito ## Basic Information - **Project Name**: mymockito - **Description**: 自己实现的一个Mockito 借鉴Mockito框架 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-07-04 - **Last Updated**: 2022-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 自己动手写Mockito Demo 在学习了Mockito实现原理之后,发现其实它本质上就是通过代理 + 反模式打桩实现的。那么可以自己实现一个Mockito么? 参考相关资料后,发现应该是可行的,并找到类似材料,那么试试吧。 ## 1.实现 mock Mock的实现关键是,实现动态代理,被 mock 的对象只是“假装”调用了该方法,然后返回假的值。 可以使用cglib来进行动态代理。通过class对象创建该对象的动态代理对象,然后设置该对象的父类与回调即可。并在回调函数中定义拦截器,实现自定义逻辑。 ## 2.实现 stub 首先定义一个类,来表示对函数的调用,重写equals()方法,通过函数名 + 参数列表来判断调用是否相同。 ## 3.测试 ## 4.其他 Mockito打桩返回的方式有很多,这边主要关注了经常使用的thenAnswer()函数,至于其他thenReturn()、thenThrow()、thenCallRealMethod()、then()函数,基本类似。