Maven环境下easymock开发入门实例
来源:互联网 发布:淘宝有订单怎么发货 编辑:程序博客网 时间:2024/05/16 08:30
在大项目中,都是分模块来完成,比如dao层的数据操作接口没有完成,那么调用它的service层也就无法进行开发和测试了,mock框架就是来解决这个问题的,它只关注业务交互层的操作。
(mock关注的是交互,stub关注的是状态)
1、mock的生命周期
- record
- replay
- verify
2、mock的实例
- TestEasyMock.java
package service;import model.User;import org.easymock.EasyMock;import org.junit.Test;import service.impl.UserService;import uitls.EntitiesHelper;import dao.IUserDao;public class TestEasyMock { @Test public void testLoad(){ //1、创建DAO的mock对象,目前就进入了record阶段 IUserDao ud = EasyMock.createMock(IUserDao.class); User u = new User(1,"admin","123","管理员"); //2、记录ud可能会发生的操作的结果(一定是跟service中方法对应的整个流程,少一个就会报错) /** * 以下代码的的含义是:当在dao中调用了load的方法并且参数为admin * 的时候,返回值是u对象 */ EasyMock.expect(ud.load("admin")).andReturn(u);// EasyMock.expect(ud.load("admin")).andReturn(u).times(3);//load("admin")执行3次 //以下两句是用来操作没有返回值的方法 ud.delete("abc"); EasyMock.expectLastCall(); //3、进入测试阶段,也就是replay阶段 EasyMock.replay(ud); IUserService us = new UserService(ud); //完成测试 User tu = us.load("admin"); EntitiesHelper.assertUser(tu,u); //3、验证交互关系 EasyMock.verify(ud); }}
3、 mock的几种创建方式
以下分别为这两个方法的测试方式:
- createmock
@Test public void testLoad(){ //1、创建DAO的mock对象,目前就进入了record阶段 IUserDao ud = EasyMock.createMock(IUserDao.class); User u = new User(1,"admin","123","管理员"); //2、记录ud可能会发生的操作的结果(一定是跟service中方法对应的整个流程,少一个就会报错) /** * 以下代码的的含义是:当在dao中调用了load的方法并且参数为admin * 的时候,返回值是u对象 */ EasyMock.expect(ud.load("admin")).andReturn(u);// EasyMock.expect(ud.load("admin")).andReturn(u).times(3);//load("admin")执行3次 /** * 使用的是createmock,如果方法调用顺序不一致,不会抛出异常 */ //以下两句是用来操作没有返回值的方法 ud.delete("abc"); EasyMock.expectLastCall(); EasyMock.expect(ud.load("admin")).andReturn(u); //3、进入测试阶段,也就是replay阶段 EasyMock.replay(ud); IUserService us = new UserService(ud); //完成测试 User tu = us.load("admin"); EntitiesHelper.assertUser(tu,u); //3、验证交互关系 EasyMock.verify(ud); }
- createstrictmock
@Testpublic void teststrictLoad(){ //1、创建DAO的mock对象,目前就进入了record阶段 IUserDao ud = EasyMock.createStrictMock(IUserDao.class); User u = new User(1,"admin","123","管理员"); //2、记录ud可能会发生的操作的结果(一定是跟service中方法对应的整个流程,少一个就会报错) /** * 以下代码的的含义是:当在dao中调用了load的方法并且参数为admin * 的时候,返回值是u对象 */ EasyMock.expect(ud.load("admin")).andReturn(u);// EasyMock.expect(ud.load("admin")).andReturn(u).times(3);//load("admin")执行3次 /** * 使用的是createStrictMock,如果方法调用顺序不一致,会抛出异常 */ //以下两句是用来操作没有返回值的方法 ud.delete("abc"); EasyMock.expectLastCall(); EasyMock.expect(ud.load("admin")).andReturn(u); //3、进入测试阶段,也就是replay阶段 EasyMock.replay(ud); IUserService us = new UserService(ud); //完成测试 User tu = us.load("admin"); EntitiesHelper.assertUser(tu,u); //3、验证交互关系 EasyMock.verify(ud); }
0 0
- Maven环境下easymock开发入门实例
- Maven环境下Dbunit开发入门实例
- EasyMock实例入门总结
- EasyMock入门
- Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】
- Eclipse环境下 spring MVC 入门实例
- MyEclipse环境下Hibernate入门实例
- MyEclipse环境下Hibernate入门实例
- Eclipse平台入门:开发环境与实例
- Eclipse平台入门:开发环境与实例
- jbpm 入门实例(1)——搭建Eclipse下Jbpm开发环境
- android下NDK开发环境搭建及TestJNI入门实例完整过程
- mac 下 eclipse 搭建 maven开发环境
- mac 下 eclipse 搭建 maven开发环境
- eclipse开发环境下安装maven
- easymock单元测试实例二
- Linux环境下NDK JNI开发实例
- Android Studio环境下ndk开发实例
- Flask-SQLAlchemy管理数据库
- 线性DP总结(LIS,LCS,LCIS,最长子段和)
- 如何在.net4.0中使用.net4.5的async/await实现异步
- 凯撒密码--简单的加密与解密
- [leetcode]Letter Combinations of a Phone Number
- Maven环境下easymock开发入门实例
- Day 5:自己编写的mysql类
- 年会感想
- c++回调函数 callback
- python 安装模块的常用方法及如何查看已安装的模块
- iOS 组透明
- java并发编程——ExecutorService\join\yield
- Scrapy 创建 常用命令
- HDU 2073 无限的路