目前我们已经对如何利用Spring Test组件,测试struts2的action请求,spring mvc的web请求,单个文件的测试都做了说明。这中间我们还使用了两种模拟对象的框架。EasyMock和Mockito。


我们在来说下什么是Mock测试?



Mock 最大的功能是帮你把单元测试的耦合分解开,如果你的代码对另一个类或者接口有依赖,它能够帮你模拟这些依赖,并帮你验证所调用的依赖的行为。


比如,下面这个依赖


spring压测工具 spring test mock_私有方法


当我们需要测试A类的时候,如果B和C不可用,或者是依赖他们需要涉及更多的资源加载及处理,如果没有mock我们必须全部把他们加载进来(当然你可以自己写stub,不过这个就显得麻烦了)。那么


有了mock之后呢,就会像下面这样


spring压测工具 spring test mock_spring单元测试_02



使用Mock测试的前提条件


那就是要面向超类型编程

使用一个接口来描述这个对象 在产品代码中实现这个接口 在测试代码中实现这个接口 在被测试代码中只是通过接口来引用对象,所以它不知道这个引用的对象是真实对象,还是 Mock 对象。


Java Mock测试方法


现在有Mockito ,Jmock,EasyMock等,个人推荐使用Mockito。



Mockito的特性


expect-run-verify方式,即 期望-运行-验证的方式。 而 Mockito 则使用更简单,更直观的方法:在执行后的互动中提问。




其实目前我们无论使用EasyMock还是Mockito都不能mock静态方法和私有方法,如果需要模拟这两种方法的行为可以采用powerMock和mockito模拟静态方法和私有方法。