欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java单元测试:easymock教程-easymock的典型使用,easymock-easymock,关于easymock的典

来源: javaer 分享于  点击 17255 次 点评:19

java单元测试:easymock教程-easymock的典型使用,easymock-easymock,关于easymock的典


关于easymock的典型使用方式,在easymock的官网文档中,有非常详尽的讲解,文档地址为 http://easymock.org/EasyMock3_0_Documentation.html,文档的开头一部分内容都是easymock中最基本的使用介绍,虽然是英文,但是非常容易看懂,适用新学者入门。

这里只罗列一些简单的常用功能,依然以前面教程中使用到的测试案例为例:

package cn.outofmemory.easymock;public class UserServiceImplTest extends Assert {  @Test  public void testQuery() {    User expectedUser = new User();    user.set.;    UserDao userDao  = Easymock.createMock(UserDao.class);    Easymock.expect(userDao.getById("1001")).andReturn(expectedUser);    Easymock.replay(userDao);    UserServiceImpl  service = new UserServiceImpl();    service.setUserDao(userDao);    user user = service.query("1001");    assertNotNull(user);    assertEquals();    //veify return user    Easymock.verify(userDao);  }}

这段简短的代码中包含以下easymock的功能:

一. 创建mock对象

UserDao userDao  = Easymock.createMock(UserDao.class);

二. 记录mock对象期望的行为

Easymock.expect(userDao.getById("1001")).andReturn(expectedUser);

这里记录了mock对象的行为:getById()方法被调用,调用次数为1(easymock之中如果没有明确指出调用次数,默认为1),参数为"1001",expectedUser将作为返回值。

三. 进入replay阶段

Easymock.replay(userDao);

四. 对mock对象执行验证

Easymock.verify(userDao);

对上面上面的代码稍加改动以展示easymock的其他基本功能

一. 指定期望的调用次数

Easymock.expect(userDao.getById("1001")).andReturn(expectedUser).times(3);

二. 指定抛出期望的异常

Easymock.expect(userDao.getById("1001")).andThrow(new RuntimeException("no user exist"));

三. 记录void 方法的行为

Easymock.expect(userDao.getById("1001")) 这样的用法只能使用与mock对象的有返回值的方法,如果mock对象的方法是void,则需要使用expectLastCall():userDao.someVoidMethod();Easymock.expectLastCall();

Easymock.expect(***)一样,同样支持指定调用次数,抛出异常等:

Easymock.expectLastCall().times(3);Easymock.expectLastCall().andThrow(new RuntimeException("some error"));

四. 灵活的参数匹配

Easymock.expect(userDao.getById(Easymock.isA(String.class))).andReturn(expectedUser);

类似的还有anyInt(),anyObject(), isNull() , same(), startsWith()等诸多实现。

相关栏目:

用户点评