首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

EasyMock入门引见

2012-08-28 
EasyMock入门介绍本文提供一个使用EasyMock的简单介绍,内容转载节选自《EasyMock 使用方法与原理剖析》 。更

EasyMock入门介绍

本文提供一个使用EasyMock的简单介绍,内容转载节选自《EasyMock 使用方法与原理剖析》 。更详细的介绍请参考这篇文章。


在单元测试中,我们常遇到的问题是应用中其它的协同模块尚未开发完成,或者被测试模块需要和一些不容易构造、比较复杂的对象进行交互。另外,由于不能肯定其它模块的正确性,我们也无法确定测试中发现的问题是由哪个模块引起的。
对于这种情况,我们可以创建模拟对象来模拟那些需要隔离出去的对象,从而把测试与测试边界以外的对象隔离开。这就是所谓的Mock 方法。


但手工编写自定义的 Mock 对象既耗时,又容易引入错误。EasyMock为我们提供了动态构建 Mock 对象的功能。
EasyMock 是一套用于通过简单的方法对于给定的接口生成 Mock 对象的类库。它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。通过 EasyMock,我们可以方便的构造 Mock 对象从而使单元测试顺利进行。


使用 EasyMock 进行单元测试的步骤:
1.使用 EasyMock 生成 Mock 对象;
2.设定 Mock 对象的预期行为和输出;
3.将 Mock 对象切换到 Replay 状态;
4.调用 Mock 对象方法进行单元测试;
5.对 Mock 对象的行为进行验证。



下面我们以java.sql.ResultSet为例,演示一下EasyMock的使用。

首先,当然得先下载easymock.jar , 添加到classpath中。上Easymock官网上下就可以了。


ResultSet的创建是一个复杂的过程,需要先获取数据库连接,再创建 Statement,最后才能获取ResultSet对象。如果我们测试时想要摆脱对数据库的依赖,就可以创建一个“虚拟”的ResultSet对象,想调用哪个方法,就使用Easymock设定一下它的输出。


下面上代码:

?

ResultSet mockResultSet = org.easymock.EasyMock.createMock(ResultSet.class);//生成 Mock 对象mockResultSet.getString("name");//设定 Mock 对象的预期行为EasyMock.expectLastCall().andReturn("My return value");//设定 Mock 对象的预期输出EasyMock.replay(mockResultSet);//将 Mock 对象切换到 Replay 状态//我们真正想让mock对象做的事情:输出上面设定的值:"My return value"System.out.println(mockResultSet.getString("name"));org.easymock.EasyMock.verify(mockResultSet);
?

EasyMock还有很多好用的功能没有演示,如设定方法调用次数、设定预期抛出的异常等,详细介绍见《EasyMock 使用方法与原理剖析》https://www.ibm.com/developerworks/cn/opensource/os-cn-easymock/

热点排行