Wanana's Blog
边走边唱|wanana| 技术&生活&牢骚 各种博
Tag Archives: easyMock
[junit手记]关于EasyMock
最近一直在看《测试驱动开发-使用指南》,图书馆借了中文版,一阵惊喜,然后一激动就买了本英文影印版的收藏(中文的买不到)。这两天闲着,敲了书上的一些代码进去。准备把对EasyMock和jemmy的一点经验陆续总结在这儿。 写的好费劲啊…还是觉得完全没说清楚…先放出来再说好了 easyMock 主页&下载 关于mock的定义 “Mock 对象是一个术语,原来主要流行于eXtreme程序员和JUnit小组中。在单元测试上下文中,一个mock对象是指这样的一个对象——它能够用一些“虚 构的占位符”功能来“模拟”实现一些对象接口。在测试过程中,这些虚构的占位符对象可用简单方式来模仿对于一个组件的期望的行为和结果,从而让你专注于组 件本身的彻底测试而不用担心其它依赖性问题。” 以上概念为引用-。-。 测试的一般模式是三步: 设置前置条件 执行要测试的功能 检查后置条件是否满足 但是,编写测试的时候最好按照相反的顺序,即: 编写测试你所期望的测试结果的断言 编写要想取得那样的结果所需要的代码 设定任何前置条件(junit中可以使用setUp()来隐含完成) 即设置期待结果 如果由easyMock完成,步骤如下 简单来说是三步(EasyMock 2.3中的步骤,和TDD书中的老版本步骤完全不同>.<) 1. create a Mock Object for the interface we would like to simulate创建模拟对象 使用org.easymock.EasyMock类中的createMock(XXX.Class);或者createNiceMock(XXX.Class); 参数为一个java.lang.Class 对象 加createNiceMock 不会捕获”unexpected method calls”,即你不用指定所有期待会调用的方法及次数。 2. record the expected behavior, and //期待调用方法及参数(EasyMock会检查传入的movies跟后面实际调用的movies是否相同。使用equals方法检查。 //所以如果是自定义类型,需要至少覆盖equals方法。最好覆盖hashCode()方法。 mockView.setMovies(movies); //期待调用次数 expectLastCall().times(1); //如果需要设定返回值 expect(mockView.getNewName()).andReturn(LOST_IN_SPACE); [...]


最新评论