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

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

EasyMock与JMock的比较

发布: 2009-4-01 10:24 | 作者: 不详 | 来源: 测试时代采编 | 查看: 232次 | 进入软件测试论坛讨论

领测软件测试网

本文假设读者已经了解了MockObjects的使用目的和基本方式,不对MockTest之类的技术作过多解释。仅提醒一句:“不要测试你的MockObjects”。

本文作为一个评测结果的同时,也可以作为EasyMock和jMock的简短教程。他们本身都很易用,可惜带的示例过于复杂,都用了过多的模式。看过本文的例子,相信就可以从容的在项目中使用了。

Java中常用的MockObjects有EasyMock和jMock等。其中EasyMock开发较早,已经出了1.1版本,而jMock前几天才刚推出了1.0 final。作为刚成熟的小弟弟,jMock有什么竞争实力呢?

本比较针对于以下几个方面,代码请见附件。

1是否能够对具体类进行模拟(当然,对接口模拟是基本功能)

2是否能够对方法名,参数,返回值进行动态控制

3基本代码行数

4是否能够对具有构造参数的具体类模拟

   现在比较开始了。首先制作若干测试文件,很简单。要模拟的有一个接口和一个具体类,叫做TheInterfaceToMock和TheClassToMock,另外,提供方法SampleReturn sampleMethod(Parameter p);以及同名无参数方法。

   第一个测试是针对TheInterfaceToMock,提供ParameterImpl和SampleReturnImpl作为期待的参数和返回值。

    jMock代码如下:  

publicclassJMockUsageextendsMockObjectTestCase{

   publicvoidtestReturnValueWithParemeter(){       

       //构造Mock控制器

       Mockm=newMock(TheInterfaceToMock.class);

       //这是要测试MockObject

       TheInterfaceToMockmock=(TheInterfaceToMock)m.proxy();

       //期待的返回值

       SampleReturnsr=newSampleReturnImpl();

       //期待的参数

       Parameterp=newParameterImpl();

       

       //控制器,期待一次,方法sampleMethod,参数等于p(equals),将返回sr

       m.expects(once()).method("sampleMethod")

.with(eq(p)).will(returnValue(sr));

              

       //正式执行mockobject

       SampleReturnret=mock.sampleMethod(newParameterImpl());

       //确定返回值是相同的

       assertSame(sr,ret);

   }

 

}

 

延伸阅读

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

TAG: EasyMock JMock

31/3123>

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

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