技术开发 频道

什么是mock测试

  EasyMock

  简介

  准备

  1.获取J2SDK;

  2. 获取JUnit V3.8.1(从http://www.junit.org获取开发包);

  3.获取EasyMock V1.1(从http://www.easymock.org获取EasyMock开发包)。

  4.为了开发方便,建议使用一个好IDE。以下例子中的代码均是在Eclipse V3.0环境下进行的调试。

  例子一

  以下是一个简单例子,为了方便对比,这里重新实现了JMock例子一,代码如下:

package test1;

  
import org.easymock.*;

  
import junit.framework.*;

  
import javax.servlet.http.*;

  
public class MockRequestTest extends TestCase{

  
private MockControl control;

  
private HttpServletRequest mockRequest;

  
public void testMockRequest(){

  
//创建一个Mock HttpServletRequest的MockControl对象

  control
= MockControl.createControl(HttpServletRequest.class);

  
//获取一个Mock HttpServletRequest对象

  mockRequest
= (HttpServletRequest) control.getMock();

  
//设置期望调用的Mock HttpServletRequest对象的方法

  mockRequest.getParameter(
"name");

  
//设置调用方法期望的返回值,并指定调用次数

  
//以下后两个参数表示最少调用一次,最多调用一次

  control.setReturnValue(
"kongxx" ,1 ,1);

  
//设置Mock HttpServletRequest的状态,

  
//表示此Mock HttpServletRequest对象可以被使用

  control.replay();

  
//使用断言检查调用

  assertEquals(
"kongxx",mockRequest.getParameter("name"));

  
//验证期望的调用

  control.verify();

  }

  }

  编译并将其当做一个Test Case运行,会发现两个测试方法均测试成功。

  例子二

  同例子一样,对JMock例子二重新实现产生了EasyMock的例子二。

  需要测试的类代码如下:

package test2;

  
import javax.servlet.http.*;

  
public class MyClass {

  
public String getName(HttpServletRequest request) {

  
return request.getParameter("name");

  }

  
public String getPassword(HttpServletRequest request) {

  
return request.getParameter("password");

  }

  }

  测试类代码如下: 

package test2;

  
import org.easymock.*;

  
import junit.framework.*;

  
import javax.servlet.http.*;

  
public class TestMyClass extends TestCase{

  
private MockControl control;

  
private HttpServletRequest mockRequest;

  
private MyClass myclass ;

  
public void setUp() {

  myclass
= new MyClass();

  
//创建一个Mock HttpServletRequest的MockControl对象

  control
= MockControl.createControl(HttpServletRequest.class);

  
//获取一个Mock HttpServletRequest对象

  mockRequest
= (HttpServletRequest) control.g
0
相关文章