桩模块:桩模块(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内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。