spring-test单元测试(四)-后记

来源:互联网 发布:java程序员哪个方向好 编辑:程序博客网 时间:2024/04/29 14:10
目前我们已经对如何利用Spring Test组件,测试struts2的action请求,spring mvc的web请求,单个文件的测试都做了说明。这中间我们还使用了两种模拟对象的框架。EasyMock和Mockito。

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

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

比如,下面这个依赖


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

使用Mock测试的前提条件
那就是要面向超类型编程
使用一个接口来描述这个对象 在产品代码中实现这个接口 在测试代码中实现这个接口 在被测试代码中只是通过接口来引用对象,所以它不知道这个引用的对象是真实对象,还是 Mock 对象。

Java Mock测试方法
现在有Mockito ,Jmock,EasyMock等,个人推荐使用Mockito。

Mockito的特性
大部分java mock的框架都是expect-run-verify方式,即 期望-运行-验证的方式。而 Mockito 则使用更简单,更直观的方法:在执行后的互动中提问。

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