• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

基础知识:Java单元测试中的伪对象介绍

发布: 2008-7-08 12:01 | 作者: 网络转载 | 来源: 测试时代采编 | 查看: 1055次 | 进入软件测试论坛讨论

领测软件测试网

 MockControl允许开发人员定义伪对象的每一个方法的行为。当他在准备态时,开发人员可以调用伪对象的方法。首先规定哪一个调用方法的行为需要被定义。然后开发人员可以使用行为定义的方法之一来定义行为。例如,看一下下面的Foo类: 
  //Foo.java 
  public class Foo { 
  public void dummy() throw ParseException { 
  ... 
  }   public String bar(int i) { 
  ... 
  }   public boolean isSame(String[] strs) { 
  ... 
  }   public void add(StringBuffer sb, String s) { 
  ... 
  } 
  } 
   
  伪对象的行为可以按照下面的方式来定义: 
   
  //get mock control 
  MockControl control = MockControl.createControl(Foo.class); 
  //get mock object 
  Foo foo = (Foo)control.getMock(); 
  //begin behavior definition 
  //specify which method invocation's behavior 
  //to be defined. 
  foo.bar(10); 
  //define the behavior -- return "ok" when the 
  //argument is 10 
  control.setReturnValue("ok"); 
  ... 
  //end behavior definition 
  control.replay(); 
  ... 
   
  MockControl中超过50个方法是行为定义方法。他们可以如下分类。 
   
  o    setReturnValue() 
   
  这些方法被用来定义最后的方法调用应该返回一个值作为参数。这儿有7个使用原始类型作业参数的`setReturnValue()方法,如setReturnValue(int i)或setReturnValue(float f)。setReturnValue(Object obj)被用来满足那些需要对象作为参数的方法。如果给定的值不匹配方法的返回值,则抛出AssertionFailedError异常。 
   
  当然也可以在行为中加入预期调用的次数。这称为调用次数限制。 
   
  MockControl control = 
  ... 
  Foo foo = (Foo)control.getMock(); 
  ... 
  foo.bar(10); 
  //define the behavior -- return "ok" when the 
  //argument is 10. And this method is expected 
  //to be called just once. 
  setReturnValue("ok", 1); 
  ... 
   
  上面的代码段定义了bar(10)方法只能被调用一次。如果提供一个范围又会怎么样呢? 
  ... 
  foo.bar(10); 
  //define the behavior -- return "ok" when the 
  //argument is 10. And this method is expected 
  //to be called at least once and at most 3 
  //times. 
  setReturnValue("ok", 1, 3); 
  ... 
   
  现在bar(10)被限制至少被调用一次最多3次。更方便的是Range已经预定义了一些限制范围。 
  ... 
  foo.bar(10); 
  //define the behavior -- return "ok" when the 
  //argument is 10. And this method is expected 
  //to be called at least once. 
  setReturnValue("ok", Range.ONE_OR_MORE); 
  ... 
   
 

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

32/3<123>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网