使用 EasyMock 进行单元测试
http://www.ibm.com/developerworks/cn/opensource/os-cn-easymock/
下载地址:
http://easymock.org/Downloads.html
EasyMock 默认只支持为接口生成 Mock 对象
1、构建Mock对象
单个Mock对象 java.sql.ResultSet
ResultSet mockResultSet = EasyMock.createMock(ResultSet.class);
多个 Mock 对象
IMocksControl control = EasyMock.createControl();
java.sql.Connection mockConnection = control.createMock(Connection.class);
java.sql.Statement mockStatement = control.createMock(Statement.class);
java.sql.ResultSet mockResultSet = control.createMock(ResultSet.class);
2、添加Mock对象行为 Record
(1)对 Mock 对象的特定方法作出调用;
(2)通过 org.easymock.EasyMock 提供的静态方法 expectLastCall 获取上一次方法调用所对应的 IExpectationSetters 实例;
(3)通过 IExpectationSetters 实例设定 Mock 对象的预期输出。
2.1 设定预期返回值
例:
mockResultSet.getString(1);
expectLastCall().andReturn("My return value");
//方法总是返回"My return value"
//对参数值进行匹配时,默认采用 Object.equals() 方法
expectLastCall().andStubReturn("My return value");
2.2 设定预期异常抛出
IExpectationSetters<T> andThrow(Throwable throwable);
//设定抛出默认异常的函数
void andStubThrow(Throwable throwable);
2.3 设定预期方法调用次数
IExpectationSetters<T>times(int count);
mockResultSet.getString(1);
expectLastCall().andReturn("My return value").times(3);
3 将 Mock 对象切换到 Replay 状态
//由EasyMock.createMock方法生产
EasyMock.replay(mockResultSet);
//由IMocksControl 接口提供的 createMock 方法生成
control.replay();