什么是mock测试

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

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

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

  例子一

  以下是一个简单例子,为了方便对比,这里重新实现了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

相关阅读:

Gmock初体验

使用 MOCK 对象进行单元测试的实例讲解

模拟对象测试技术Mock(一)

如何正确的使用Mock

Mock不是测试的银弹

不要把Mock当作你的设计利器

EasyMock使单元测试更加容易

何时应该使用Mock对象?

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号