从Fitnesse中学习Java单元测试

发表于:2011-7-26 11:05  作者:邵育亮   来源:51Testing软件测试网原创

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签:

  桩模块:桩模块(Stub)是指模拟被测试的模块所调用的模块,而不是软件产品的组成的部分。主模块作为驱动模块,与之直接相连的模块用桩模块代替。在集成测试前要为被测模块编制一些模拟其下级模块功能的“替身”模块,以代替被测模块的接口,接受或传递被测模块的数据,这些专供测试用的“假”模块称为被测模块的桩模块。

  在java中我们常用的用来构建驱动模块和装模块的技术有 EasyMock, JMock,相信这块很多人都已经有所了解,EasyMock采用了Record 和 Replay的方式来实现针对某个类和接口的Mock。在Fitnesse的单元测试中,我发现他们使用了另外的一个Mock工具,叫Mockito。我现在Google Trend上Google了一把,发现原来Mockito目前已经在Mock领域被很多用户所接受,热门度超过了EasyMock和JMock

  Mockito支持的语言很多,除了Java之外,还支持Python , Javascript,Scala,Perl,让我这个Python控真是大好消息啊。

  相对于EasyMock这种已经被广泛使用了的Mock的工具,为什么像Fitnesse开发团队这样越来越多的人开始选择使用Mockito,它有什么优势呢?

  √ 不需要采用 Recode/Replay的模式,只需要Verify和Stub就可以了

  √ 非常容易的构建Mock

  √ 使用hamcrest matchers来匹配参数

  我们直接从Fitnesse的源码中来看如何使用Mockito来构建单元测试,看一下ExecutionReportTest.class中的测试方法

  ……………………

  查看全文请点击下载:http://www.51testing.com/html/13/n-241113.html

  在实际的assertThat中真正的调用测试代码,并在后面的代码调用的堆栈中实际调用了上述定义中的方法

  其中触发的调用:element.getElementsByTagName(“totalRunTiemInMIlls”); 实际返回的就是emptyNodeList的对象。更多的Mockito的使用可以看一下其官方的网站http://mockito.org/。

  越来越多的开源项目,开源测试工具让我们从中获益不少。作为一个测试工程师,在使用开源测试工具的同时,也应该去研究一下其源码。一来作为一种Code Review能力上的锻炼。同时从中也可以学习到单元测试的相关技巧。Fitnesse的源码就是一个很好的基于Junit构建单元测试的例子。我也通过学习,更好的在自己的项目中开展了单元测试。

  查看全文请点击下载:http://www.51testing.com/html/13/n-241113.html

  版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。


22/2<12

评 论

论坛新帖



建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2022, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道