有时候候为了测试控制层或业务层通常我们要模拟个别对象,屏蔽对这些对象的依懒。如我们测试struts1.x的时候,象HttpservletRequest等对象是由容器创建的,要测试控制层,通常我们要启动容器(一般情况下也是启动容器进行测试)。但是我们也可以用EasyMock模拟HttpServletRequest出等对象(spring已提供类似的模拟对象MockHttpServletRequest) 实现struts1.x控制层测试.
而通常,EasyMock用得更多在业务层上的测试。通常业务层依懒于DAO层,我们可以用EasyMock模拟Dao对象,屏蔽对DAO依懒。好废话少说了。进入正题。
EasyMock提供对接口,类的模拟(以前要通过EasyMock扩展包才支持),能够通过录制、回放、检查三步来完成大体的测试过程。
对HttpServletRequest的模拟:
public class TestMockHttpServletRquest {
IMocksControl control = EasyMock.createControl();
HttpServletRequest request = null;
HttpSession session = null;
@Before
public void setUp() {
request = control.createMock(HttpServletRequest.class); //创建模拟对象
session = control.createMock(HttpSession.class);////创建模拟对象
}
@Test
public void testWeb() { //录制
EasyMock.expect(request.getParameter("name")).andReturn("landy");
//总是返回模拟的对象
EasyMock.expect(request.getSession()).andStubReturn(session);
EasyMock.expect(session.getAttribute("name")).andReturn("landy");
control.replay(); //回放
String name=request.getParameter("name");
System.out.println(name);
HttpSession session2 =request.getSession();
String landy=(String)session.getAttribute("name");
System.out.println("landy:"+landy);
Assert.assertEquals(landy, name);
}
@After
public void tearDown() {
control.verify(); // 验证
}
HttpRequestServlet 等对象比较复杂, 完成用easyMock对这些对象的模拟,EasyMock的一些基本用法就掌握了。
EasyMock也可以用来模拟类.
写道
public class BeanService { //被模拟的类
/* (non-Javadoc)
* @see com.landyyan.test.IbeanService#testMock()
*/
public String testMock() { //有返值方法
return "hello222222";
}
public void save() { //没有返回值 方法
System.out.println();
System.out.println("sssss");
}
测试类:
public class TestBeanService {
private IMocksControl control = EasyMock.createControl();
private BeanService service = null;
@Before
public void setUp() {
service = control.createMock(BeanService.class);
}
@Test
public void testSayHi() {
EasyMock.expect(service.testMock()).andReturn("hello22").andReturn("sss222");
//第一次调用,返回“hello22”, 第二次调用,返回sss222
control.replay();
//若是其它Service 将模拟出的Dao对象set到业务层中,然后调用即可
System.out.println(service.testMock());
System.out.println(service.testMock());
}
@After
public void testAfter() {
control.verify();
}
}
分享到:
相关推荐
EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较...
EasyMock主要是为测试提供模拟数据,比如你可以模拟HttpServletRequest。
简单易用:使用 EasyMock 可以快速地生成模拟对象,并且可以通过录制、回放、检查三步来完成测试过程。 支持多种类型:EasyMock 支持对接口、抽象类以及普通的类进行模拟。 验证功能:EasyMock 提供了一些方法来验证...
EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。本文将对 EasyMock 的功能和原理进行介绍,并通过示例来说明如何使用 EasyMock 进行单元测试。 ...
easyMock
node中间层项目,后端使用easy mock模拟的
EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂...
它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。通过 EasyMock,我们可以方便的构造 Mock 对象从而使...
easymock 的使用方法简介easymock 的使用方法简介
EasyMock.jar 单元测试模拟对象 为实现!!
easymock2 EasyMock使用简明手册
EasyMock单元测试的扩展; EasyMock简介(抽象类接口做测试); EasyMock来进行测试; EasyMock如何打桩;...EasyMock使用技巧; EasyMock使用简明手册; EasyMock使用说明; EasyMock使用手记; 用Mock object进行隔离测试;
使用EasyMock做java单元测试的例子,包含所需要的jar包
当在测试过程中一些复杂的对象生成相当麻烦、费时或者根本无法生成时,可以用模拟的对象来代替真实的对象。 EasyMock 可以 mock 接口和 java 类,但是 class mocking 有一些限制: 不能 mock 类的 final 方法。如果 ...
easyMock2.2
EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。
EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。
还在为EasyMock使用时出异常而烦恼? 本压缩包包含除了Junit4之外easyMock3.1所用到的所有相关jar包,junit4可自己导入eclipse自带的即可 本压缩包包括: asm.jar cglib.jar objenesis.jar等 其中asm与cglib已兼容,放心...
NULL 博文链接:https://bruceliu02.iteye.com/blog/1775446
还在为找不到jar文件烦心吗,不用了到我空间来有你想要的,持续更新。。。 easymock.jar,easymockclassextension.jar