`
javaso
  • 浏览: 53247 次
  • 性别: 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  
文章不错,期待楼主下文!

相关推荐

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

    在Node.js开发中,"Node.js-node中间层项目后端使用easymock模拟的"这一主题涉及到几个关键知识点,包括Node.js中间件、EasyMock的使用以及后端模拟数据的重要性。下面将对这些概念进行深入阐述。 1. **Node.js中间...

    easyMock

    - **创建模拟对象**:你可以使用`EasyMock.createMock()`方法创建一个模拟对象,然后通过`EasyMock.replay()`进入“播放”模式,让模拟对象按照预期执行。 - **设置预期**:使用`expect()`方法设置对模拟对象的期望...

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

    3. **预定义返回值或异常**:使用`andReturn()`、`andThrow()`等方法设定模拟对象在特定调用后的反应。 4. **启动回放**:调用`EasyMock.replay()`开始回放模式,模拟对象开始按照之前设置的期望进行。 5. **执行...

    EasyMock

    在工具方面,EasyMock提供了方便的API和集成到各种测试框架(如JUnit)的能力,使得开发者可以轻松地在测试代码中使用模拟对象。此外,EasyMock还支持扩展,比如通过EasyMock Class Extension来模拟静态方法和最终类...

    easymock.jar,easymockclassextension.jar

    2. **创建模拟对象**:使用Easymock的`createMock`或`createNiceMock`方法创建模拟对象。 3. **设置预期**:通过`expect`方法设定模拟对象的方法调用预期。 4. **启动测试**:调用`replay`方法开始执行模拟。 5. ...

    EasyMock介绍和使用

    2. **预设行为**:使用`expect()`方法设定模拟对象的方法调用应如何响应,例如返回特定值、抛出异常等。 3. **启动测试**:调用`replay()`方法开始执行测试,此时EasyMock将开始记录实际发生的调用。 4. **验证...

    EasyMock 使用案例(含lib)

    2. **创建模拟对象**:使用`EasyMock.createMock()`方法创建模拟对象。这个对象将代表你要模拟的真实对象。例如,如果你有一个名为`MyService`的服务类,你可以创建一个`MyService`的模拟对象。 3. **定义行为**:...

    模拟测试辅助工具easyMock.zip

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

    easymock教程.pdf

    * 使用easymock可以模拟依赖对象的行为,从而简化单元测试。 ### easymock的record-replay-verify模型 * Record阶段:记录主要测试对象的行为。 * Replay阶段:重放主要测试对象的行为。 * Verify阶段:验证主要...

    easymock-3.2.jar

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

    easymock资料和源代码实例

    2. **创建模拟对象**:使用`EasyMock.createMock()`方法创建模拟对象,如`MyInterface mockObject = EasyMock.createMock(MyInterface.class);` 3. **设置期望**:利用`EasyMock.expect()`方法设置模拟对象的行为,...

    4-EasyMock-Servlet.rar

    - 使用EasyMock,我们可以模拟HttpServletRequest和HttpServletResponse对象,这样就可以在没有真实HTTP环境的情况下测试Servlet。 - 我们可以设置期望,比如期望Servlet如何处理特定的请求参数,或者期望Servlet...

    easymock-3.2.zip

    4. **执行测试**:现在,你可以像使用真实对象一样使用模拟对象,EasyMock会监控其行为。 5. **验证行为**:最后,调用`verify()`方法检查模拟对象的方法是否按预期被调用。如果方法调用不符合设置的期望,EasyMock...

    easymock-request.getParamsNames

    Easymock 提供了一种方式来模拟 `HttpServletRequest` 对象,这样我们可以在没有实际HTTP请求的情况下测试我们的Servlet代码。首先,我们需要创建一个 `HttpServletRequest` 的模拟对象,并设置期望的行为。例如,...

    EasyMock单元测试例子

    1. **创建模拟对象**:使用`EasyMock.createMock()`创建模拟对象,然后通过`expect()`方法设置期望。 2. **录制模式(Record State)**:在这个阶段,设置模拟对象的行为,如`mockObject.methodName().andReturn...

    EasyMock 实例

    5. **验证行为**:测试完成后,使用`EasyMock.verify()`方法检查模拟对象是否按照预期被调用了。这有助于确保你的代码正确地使用了模拟对象。 ```java EasyMock.verify(myServiceMock); ``` 6. **清理资源**:...

    EasyMock 架包

    1. **清晰的API**:EasyMock提供了清晰且易于使用的API,使得设置和验证模拟对象的行为变得简单。例如,`expect()`方法用于设置期望,`andAnswer()`用于定义方法的返回值,`replay()`和`verify()`则分别用于启动模拟...

    Learning EasyMock3.0 By Official Example

    1. `BasicDevGuide.pdf`:这是 EasyMock 的基础开发指南,涵盖了如何创建模拟对象、设置预期、回放和验证等基本操作。例如,创建模拟对象可以使用 `EasyMock.createMock()` 方法,而设置预期则通过 `expect()` 方法...

    easymock3.2 (文档+源码+例子)

    Easymock是一款强大的Java单元测试工具,它允许开发者创建模拟对象来测试代码。这个压缩包包含的是Easymock的3.2版本,其中包括文档、源码和示例,对于学习和理解Easymock的工作原理以及如何在实际项目中使用它非常...

    EasyMock.jar

    EasyMock的核心功能是生成模拟对象,这些对象可以代替真实对象在测试中使用。它提供了API来定义模拟对象的行为,如期望调用的方法、返回值以及抛出的异常。这种方式使得我们可以在测试中精确地控制被测试方法的输入...

Global site tag (gtag.js) - Google Analytics