有时候候为了测试控制层或业务层通常我们要模拟个别对象,屏蔽对这些对象的依懒。如我们测试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();
}
}
分享到:
相关推荐
在Node.js开发中,"Node.js-node中间层项目后端使用easymock模拟的"这一主题涉及到几个关键知识点,包括Node.js中间件、EasyMock的使用以及后端模拟数据的重要性。下面将对这些概念进行深入阐述。 1. **Node.js中间...
- **创建模拟对象**:你可以使用`EasyMock.createMock()`方法创建一个模拟对象,然后通过`EasyMock.replay()`进入“播放”模式,让模拟对象按照预期执行。 - **设置预期**:使用`expect()`方法设置对模拟对象的期望...
3. **预定义返回值或异常**:使用`andReturn()`、`andThrow()`等方法设定模拟对象在特定调用后的反应。 4. **启动回放**:调用`EasyMock.replay()`开始回放模式,模拟对象开始按照之前设置的期望进行。 5. **执行...
在工具方面,EasyMock提供了方便的API和集成到各种测试框架(如JUnit)的能力,使得开发者可以轻松地在测试代码中使用模拟对象。此外,EasyMock还支持扩展,比如通过EasyMock Class Extension来模拟静态方法和最终类...
2. **创建模拟对象**:使用Easymock的`createMock`或`createNiceMock`方法创建模拟对象。 3. **设置预期**:通过`expect`方法设定模拟对象的方法调用预期。 4. **启动测试**:调用`replay`方法开始执行模拟。 5. ...
2. **预设行为**:使用`expect()`方法设定模拟对象的方法调用应如何响应,例如返回特定值、抛出异常等。 3. **启动测试**:调用`replay()`方法开始执行测试,此时EasyMock将开始记录实际发生的调用。 4. **验证...
2. **创建模拟对象**:使用`EasyMock.createMock()`方法创建模拟对象。这个对象将代表你要模拟的真实对象。例如,如果你有一个名为`MyService`的服务类,你可以创建一个`MyService`的模拟对象。 3. **定义行为**:...
EasyMock 是一套通过简单的方法对于指定的接口或类生成 Mock 对象的类库,它能利用对接口或类的模拟来辅助单元测试。 Mock 方法是单元测试中常见的一种技术,它的主要作用是模拟一些在应用中不容易构造或者比较...
* 使用easymock可以模拟依赖对象的行为,从而简化单元测试。 ### easymock的record-replay-verify模型 * Record阶段:记录主要测试对象的行为。 * Replay阶段:重放主要测试对象的行为。 * Verify阶段:验证主要...
EasyMock主要是为测试提供模拟数据,比如你可以模拟HttpServletRequest。
2. **创建模拟对象**:使用`EasyMock.createMock()`方法创建模拟对象,如`MyInterface mockObject = EasyMock.createMock(MyInterface.class);` 3. **设置期望**:利用`EasyMock.expect()`方法设置模拟对象的行为,...
- 使用EasyMock,我们可以模拟HttpServletRequest和HttpServletResponse对象,这样就可以在没有真实HTTP环境的情况下测试Servlet。 - 我们可以设置期望,比如期望Servlet如何处理特定的请求参数,或者期望Servlet...
4. **执行测试**:现在,你可以像使用真实对象一样使用模拟对象,EasyMock会监控其行为。 5. **验证行为**:最后,调用`verify()`方法检查模拟对象的方法是否按预期被调用。如果方法调用不符合设置的期望,EasyMock...
Easymock 提供了一种方式来模拟 `HttpServletRequest` 对象,这样我们可以在没有实际HTTP请求的情况下测试我们的Servlet代码。首先,我们需要创建一个 `HttpServletRequest` 的模拟对象,并设置期望的行为。例如,...
1. **创建模拟对象**:使用`EasyMock.createMock()`创建模拟对象,然后通过`expect()`方法设置期望。 2. **录制模式(Record State)**:在这个阶段,设置模拟对象的行为,如`mockObject.methodName().andReturn...
5. **验证行为**:测试完成后,使用`EasyMock.verify()`方法检查模拟对象是否按照预期被调用了。这有助于确保你的代码正确地使用了模拟对象。 ```java EasyMock.verify(myServiceMock); ``` 6. **清理资源**:...
1. **清晰的API**:EasyMock提供了清晰且易于使用的API,使得设置和验证模拟对象的行为变得简单。例如,`expect()`方法用于设置期望,`andAnswer()`用于定义方法的返回值,`replay()`和`verify()`则分别用于启动模拟...
1. `BasicDevGuide.pdf`:这是 EasyMock 的基础开发指南,涵盖了如何创建模拟对象、设置预期、回放和验证等基本操作。例如,创建模拟对象可以使用 `EasyMock.createMock()` 方法,而设置预期则通过 `expect()` 方法...
Easymock是一款强大的Java单元测试工具,它允许开发者创建模拟对象来测试代码。这个压缩包包含的是Easymock的3.2版本,其中包括文档、源码和示例,对于学习和理解Easymock的工作原理以及如何在实际项目中使用它非常...
EasyMock的核心功能是生成模拟对象,这些对象可以代替真实对象在测试中使用。它提供了API来定义模拟对象的行为,如期望调用的方法、返回值以及抛出的异常。这种方式使得我们可以在测试中精确地控制被测试方法的输入...