自己动手写Mock

相信做过单元测试的同学都有用过各种各样的mock工具,至于为什么要mock,网上有一大堆解释,简单来说就是当有些功能难以实现,或者有些功能在测试的时候无法访问的时候,这种情况就需要用到mock了。 当然mock的框架有很多,常用的有EasyMock, Jmockit, Mockito等,我个人感觉Mockito的接口用起来很舒服,所以较喜欢Mockito。Mockito的常用接口写法如下: Mocktio.when(list.get(1)).thenReturn(10); 接口的含义从使用方法上就可以看出来,即指定当调用某个方法的时候返回特定的结果。这个使用方法严格来讲叫Stub,关于mock,stub还有spy等名词我在这里就不解释了(其实我也解释不太清楚) »

Java动态代理模式

代理模式的定义,为其他对象提供一种代理以控制对这个对象的访问。使用代理模式创建代理对象,让代理对象控制目标对象的访问,并且可以在不改变目标对象的情况下添加一些额外的功能。代理模式分为静态代理模式和动态代理模式。静态代理维护难度大,可扩展性较差,这是因为代理的功能在编译期就已经决定,如果代理发生在运行时期,就会灵活很多。动态代理模式可以很好的解决这个问题。 动态代理有两种实现方式,JDK提供的反射机制和CGLIB JDK反射机制 采用JDK反射机制,运用JDK1.3之后提供的Proxy和InvocationHandler两个接口,来实现运行时代理功能。核心代码如下: public class MyInvocationHandler implements InvocationHandler { private »