`
javaso
  • 浏览: 51898 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用EasyMock模拟HttpServletRequest等对象

阅读更多

  有时候候为了测试控制层或业务层通常我们要模拟个别对象,屏蔽对这些对象的依懒。如我们测试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();
	}
}

 

 

 

 

 

 

 

1
0
分享到:
评论
1 楼 wothnet 2010-10-17  
文章不错,期待楼主下文!

相关推荐

    模拟测试辅助工具easyMock.zip

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较...

    easymock-3.2.jar

    EasyMock主要是为测试提供模拟数据,比如你可以模拟HttpServletRequest。

    EasyMock介绍及安装方法含安装方法和所有需要的软件包

    简单易用:使用 EasyMock 可以快速地生成模拟对象,并且可以通过录制、回放、检查三步来完成测试过程。 支持多种类型:EasyMock 支持对接口、抽象类以及普通的类进行模拟。 验证功能:EasyMock 提供了一些方法来验证...

    easymock的使用,含demo

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。本文将对 EasyMock 的功能和原理进行介绍,并通过示例来说明如何使用 EasyMock 进行单元测试。 ...

    easyMock

    easyMock

    Node.js-node中间层项目后端使用easymock模拟的

    node中间层项目,后端使用easy mock模拟的

    easymock-4.2.jar

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较复杂...

    easymock-4.0-bundle

    它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。通过 EasyMock,我们可以方便的构造 Mock 对象从而使...

    easymock 的使用方法简介

    easymock 的使用方法简介easymock 的使用方法简介

    EasyMock.jar

    EasyMock.jar 单元测试模拟对象 为实现!!

    easymock2.4+EasyMock使用简明手册.pdf

    easymock2 EasyMock使用简明手册

    EasyMock 使用方法与原理剖析

    EasyMock单元测试的扩展; EasyMock简介(抽象类接口做测试); EasyMock来进行测试; EasyMock如何打桩;...EasyMock使用技巧; EasyMock使用简明手册; EasyMock使用说明; EasyMock使用手记; 用Mock object进行隔离测试;

    EasyMock 使用案例(含lib)

    使用EasyMock做java单元测试的例子,包含所需要的jar包

    EasyMock介绍及安装方法

    当在测试过程中一些复杂的对象生成相当麻烦、费时或者根本无法生成时,可以用模拟的对象来代替真实的对象。 EasyMock 可以 mock 接口和 java 类,但是 class mocking 有一些限制: 不能 mock 类的 final 方法。如果 ...

    easyMock2.2.doc

    easyMock2.2

    easymock-2.5.1.jar

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。

    easymock-2.5.2工具 下载

    EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。

    EasyMock 3.1相关jar(所有)

    还在为EasyMock使用时出异常而烦恼? 本压缩包包含除了Junit4之外easyMock3.1所用到的所有相关jar包,junit4可自己导入eclipse自带的即可 本压缩包包括: asm.jar cglib.jar objenesis.jar等 其中asm与cglib已兼容,放心...

    EasyMock

    NULL 博文链接:https://bruceliu02.iteye.com/blog/1775446

    easymock.jar,easymockclassextension.jar

    还在为找不到jar文件烦心吗,不用了到我空间来有你想要的,持续更新。。。 easymock.jar,easymockclassextension.jar

Global site tag (gtag.js) - Google Analytics