Jmockit

Behavior-oriented是基于行为的mock,对mock目标代码的行为进行模仿,更像黑盒测试。State-oriented 是基于状态的mock,是站在目标测试代码内部的。可以对传入的参数进行检查、匹配,才返回某些结果,类似白盒。而State-oriented的 new MockUp基本上可以mock任何代码或逻辑。

=============================================================================================================
原理:
使用了javaagent, 在类加载@Mocked的注解对象的时候有个hook-- ClassFileTransformer来修改字节码文件,
执行到Expectations和Verifications的方法块内时使用了hook-- InstrumentationImpl. redefineClasses来重新定义已经在jvm里的类。




猜你喜欢

转载自blog.csdn.net/venlv2046/article/details/80274871