EasyMock.replay()有什么用
现在很多项目都使用EasyMock来作为单元测试框架。
EasyMock一个方法,基本上是三步:EasyMock.expect()、EasyMock.replay()、EasyMock.verify()。
在写单元测试的时候按这三步写,并不清楚EasyMock.replay()到底有什么作用。
因为在很多单元测试里,把EasyMock.replay()去掉并不影响单元测试的运行。
@Test
public void queryBookListTest() { EasyMock.expect(myDatabase.queryList()).andReturn(null); List<Book> bookList = bookDaoImpl.queryBookList(); Assert.assertTrue(bookList == null);
}
那么EasyMock.replay()到底有什么作用呢,在什么情况下才必须要有EasyMock.replay()单元测试才能正常运行呢?
来看一下必须有EasyMock.replay()才能正常运行的情况:
源码:
@Override
public List<Book> queryBookList() { List<Book> bookList = database.queryList();
if (bookList == null) {
bookList = database.queryList();
}
return bookList;
}
单元测试代码:
@Test
public void queryBookListTest() { EasyMock.expect(myDatabase.queryList()).andReturn(null);
EasyMock.expect(myDatabase.queryList()).andReturn(null); mockControl.replay(); List<Book> bookList = bookDaoImpl.queryBookList(); mockControl.verify(); Assert.assertTrue(bookList == null);
}
运行结果:
来看看把EasyMock.replay()去掉会怎样:
@Test
public void queryBookListTest() { EasyMock.expect(myDatabase.queryList()).andReturn(null);
EasyMock.expect(myDatabase.queryList()).andReturn(null); List<Book> bookList = bookDaoImpl.queryBookList(); Assert.assertTrue(bookList == null);
}
运行结果:
可以看到,报错了,单元测试没有运行成功。
当代码里涉及到同一个接口方法多次调用时,如果仅仅是在单元测试里EasyMock方法,而没有replay()时,在单元测试运行的时候,是无法对接口方法进行Mock的。
EasyMock.replay()是将Mock的行为按照Mock的步骤重发一遍,在单元测试运行的时候,就能够正确的执行了。
EasyMock.replay()有什么用的更多相关文章
- 测试--easymock的使用
使用场景:对于调用其它类中的方法,但是还没有编写完,使用easymock进行单元测试,它提供这些没有编写完的代码期待的默认值. 使用步骤: step1: pom引入: <dependency&g ...
- easymock+junit+spring学习·
Easymock学习 Author:luojie 1. Easymock简介 EasyMock 是一套通过简单的方法对于指定的 ...
- easymock入门贴
from:http://macrochen.iteye.com/blog/298032 关于EasyMock常见的几个问题, 这里(http://ozgwei.blogspot.com/2007/06 ...
- 使用 EasyMock 更轻松地进行测试
from:http://www.ibm.com/developerworks/cn/java/j-easymock.html 测试驱动开发是软件开发的重要部分.如果代码不进行测试,就是不可靠的.所有代 ...
- EasyMock使用手记
from:http://www.blogjava.net/supercrsky/articles/162766.html Mock 对象能够模拟领域对象的部分行为,并且能够检验运行结果是否和预期的一致 ...
- 【JUnit】EasyMock用法总结
使用EasyMock的总体步骤 1.生成Mock接口 IService mockService = EasyMock.createMock("name", IService.cla ...
- [置顶] EasyMock的简单使用
EasyMock总览 下面,我将讲述如何使用JUnit和EasyMock框架来进行单元测试. 在现实情况下,我们通常是在一些类里使用另外的一些类.在进行真正的测试之前,你可能需要做很多的工作,比喻说安 ...
- EasyMock入门
这是一个JavaProject,有关EasyMock用法详见本文测试用例 首先是用到的实体类User.java package com.jadyer.model; public class User ...
- 使用EasyMock对Servlet进行简单的测试
这是一个WebProject,但不需配置web.xml,因为EasyMock用不上它 首先是用到的实体类User.java package com.jadyer.model; public class ...
随机推荐
- NOIP2007 树网的核 && [BZOJ2282][Sdoi2011]消防
NOIP2007 树网的核 树的直径的最长性是一个很有用的概念,可能对一些题都帮助. 树的直径给定一棵树,树中每条边都有一个权值,树中两点之间的距离定义为连接两点的路径边权之和.树中最远的两个节点之间 ...
- laravel重定向到上一个页面怎么带参数返回 withsucess 成功提示信息
//控制器中 return back()->with('success','操作成功'); //with的参数1是一个session变量名,参数2为该session变量值,在视图直接这样获取 @ ...
- epoll简介(二)
一:多路复用的举例 以一个生活中的例子来解释: 假设你在大学中读书,要等待一个朋友(数据)来访(要读),而这个朋友只知道你在A号楼(socket集合),但是不知道你具体住在哪里,于是你们约好了在A号楼 ...
- HZOJ 寿司
这题也是挺神仙的,现在O(n)的解法还没打出来,只是用O(nlogn)卡过去了(理论上可以过),sdfz某大佬用三分拿到了65分…… 考试连暴力都没打出来…… n2暴力T40: 首先将环拆成链,我们可 ...
- uni-app获取dom元素到顶部的距离以及操作dom元素的一些样式
一. 1.首先有一个元素 <view class="activity" ref="btn"></view> 2.确认指针指向 this. ...
- linux自动挂载NTFS格式移动硬盘
转自:http://blog.163.com/cmh_lj/blog/static/100812304201252522119264/ 由于移动硬盘还有不少的资料,刚插入移动硬盘的时候发现只能自动挂载 ...
- 建立一个Web项目及一些错误解决办法
培训之前,先自学一波,写一个从Hello World,然后记录一下每天学习Java Web的过程:东西很多,有用的会写大量解释,希望能最终学完 然后搞定这门语言吧. 1.配置tomacat:点击win ...
- Python第三方包的egg info 是什么东西
xxx.egg-info 一般与 xxx文件夹同时存在,一起来表示完整模块.
- DOM常用操作,Sass基础
一个元素的子元素个数ParentNode.childElementCount 只读属性返回一个无符号长整型数字,表示给定元素的子元素数. 取消当前事件e.preventDefault();有时候我们选 ...
- hdu 1708 Fibonacci String
Fibonacci String Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...