Gmock是一个基于Groovy语言的mock框架。与Java的各种mock框架相比,Gmock利用了Groovy语言的特性,提供了更精简、更可读的语法。而与Groovy的官方解决方案——MockFor类——相比,除了更精简和可读的语法之外,用Gmock mock出来的对象是可以在Java代码中使用的,所以你可以使用Java编写代码而使用Groovy和Gmock编写测试。
入门
首先,你的测试类需要继承org.gmock.GMockTestCase。然后,使用mock()方法创建mock对象,并且只需要直接在mock对象上调用方法即可设定预期行为:
def mockLoader = mock()
// 需要使用强类型时可以这样:
// Loader mockLoader = mock(Loader)
mockLoader.load("fruit").returns("apple")
最后,在play闭包中执行你的测试:
void testBasic(){
// 创建mock对象和设定预期行为
play {
// 运行你的代码
}
}
特性
- 方法调用:mockLoader.load("fruit").returns("apple")
- 抛出异常:mockLoader.load("unknown").raises(new RuntimeException()) 或 mockLoader.load("unknown").raises(RuntimeException)
- stub:mockLoader.load("fruit").returns("apple").stub()
- 静态方法:mockMath.static.random().returns(0.5)
- 属性:mockLoader.name.returns("loader")
- 构造函数:def mockFile = mock(File, constructor('/a/path/file.txt'))
- 预期调用次数:mockLoader.load("fruit").returns("apple").atLeastOnce()
- 自定义匹配器:mockLoader.load(match { it.startsWith("fru") })
- 支持Hamcrest匹配器:mockLoader.put("test", is(not(lessThan(5))))
- 如果你的测试类不能继承GMockTestCase,那么请使用GMockController类
更详细的介绍请查看Gmock的
文档。
例子
一个完整的例子:
import org.gmock.GMockTestCase
class LoaderTest extends GMockTestCase {
void testLoader(){
def mockLoader = mock()
mockLoader.load('key').returns('value')
play {
assertEquals "value", mockLoader.load('key')
}
}
}
网址
官方网站:
http://gmock.org/
源代码:
http://code.google.com/p/gmock/
分享到:
相关推荐
首先, 我们需要下载androidpn-client-0.5.0.zip和androidpn-server-0.5.0-bin.zip。 下载地址:http://sourceforge.net/projects/Androidpn/ 解压两个包,Eclipse导入client,配置好目标平台,打开raw/...
ojdbc14-10.2.0.5.0百度云
三星手机固件下载工具SamFirm v0.5.0
赠送jar包:audience-annotations-0.5.0.jar; 赠送原API文档:audience-annotations-0.5.0-javadoc.jar; 赠送源代码:audience-annotations-0.5.0-sources.jar; 赠送Maven依赖信息文件:audience-annotations-...
赠送jar包:simpleclient-0.5.0.jar; 赠送原API文档:simpleclient-0.5.0-javadoc.jar; 赠送源代码:simpleclient-0.5.0-sources.jar; 赠送Maven依赖信息文件:simpleclient-0.5.0.pom; 包含翻译后的API文档:...
patchca-0.5.0.jar,java生成图形码jar包,网上找了好久才找到,低积分给需要的人,其他人的积分收得太高了
使用C++解析json数据格式,此资源为jsoncpp-0.5.0,已正确编译,可直接使用。
tar -zxf jsoncpp-src-0.5.0.tar.gz cd jsoncpp-src-0.5.0 scons platform=linux-gcc 就会安装成功,依赖gcc-c++
这是autobahn-0.5.0.jar的关于websocket的jar包
$ unrar x jsoncpp-src-0.5.0.rar $ cd jsoncpp-src-0.5.0 $ scons platform=linux-gcc $ sudo cp ./libs/linux-gcc-7/* /usr/local/lib $ sudo cp -r ./include/json /usr/local/include/ $ cd /usr/local/...
Specification-Version: Oracle JDBC Driver version - "10.2.0.5.0" Implementation-Version: Oracle JDBC Driver version - "10.2.0.5.0" Implementation-Vendor: Oracle Corporation Implementation-Time: Wed ...
autobahn-0.5.0.jar包,安卓开发websocket时会用到,网上并不好查找,特意分享下
jsoncpp是采用c++语言编写的用来处理json格式的第三方库。上传版本采用官方最新的0.5.0版本,在vs2010下编译生成的静态库。
ORACLE RAC 从10.2.0.5.0 升级到 10.2.0.5.8 还有个OPatch 升级补丁 我也上传了。从我上传的资源里找
Patchca是Piotr Piastucki写的一个java验证码,打包成jar文件发布,patchca简单但功能强大。
Unity3D安装文件资源提取工具,这个工具Github上有:https://github.com/ata4/disunity/releases/download/v0.5.0/disunity_v0.5.0.zip 但是有时候翻不了墙把人急得,这个提供给大家,方便大家。是最新版本了。这个...
autobahn-0.5.0.jar 以及使用的代码 用于websocket长链接
资源来自pypi官网。 资源全名:pyecharts-0.5.0.tar.gz
解析json格式库