什么是mock测试

发表于:2009-11-09 14:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:yuhaibao324    来源:51Testing软件测试博客

  例子二

  MyClass需要测试的类,提供了两个方法getName和getPassWord,都使用HttpServletRequest作为输入参数并返回从HttpServletRequest中取得的参数,具体代码如下:

  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");
  }
  }

  TestMyClass测试类,其中构造了一个假的HttpServletRequest对象,用来测试MyClass中的getName和getPassword方法,代码如下:

  package test2;
  import org.jmock.*;
  import javax.servlet.http.*;
  public class TestMyClass extends MockObjectTestCase{
  private MyClass myclass ;
  private Mock mockRequest ;
  private HttpServletRequest request ;
  public void setUp() {
  myclass = new MyClass();
  //构造一个Mock对象
  mockRequest = new Mock(HttpServletRequest.class);
  //根据Mock对象获取一个HttpServletRequest对象
  request = (HttpServletRequest)mockRequest.proxy();
  }
  public void tearDown() {
  //TODO
  }
  public void testGetName(){
  //设置要执行的操作,以下设置表示要调用一次HttpServletRequest对象的
  //getParameter方法,传递的参数是"name",期望的返回是"kongxx"
  mockRequest.expects(atLeastOnce()).method("getParameter").with(eq("name")).will(returnValue("kongxx"));
  assertNotNull(myclass.getName(request));
  assertEquals("kongxx" ,myclass.getName(request));
  }
  public void testGetPassword(){
  //设置要执行的操作,以下设置表示要调用一次HttpServletRequest对象的
  //getParameter方法,传递的参数是"password",期望的返回是"123456789"
  mockRequest.expects(atLeastOnce()).method("getParameter").with(eq("password")).will(returnValue("123456789"));
  assertNotNull(myclass.getPassword(request));
  assertEquals("123456789" ,myclass.getPassword(request));
  }
  }

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

  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环境下进行的调试。

32/3<123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号