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 是 Oracle 公司发布的一款用于 Java 应用程序连接 Oracle 数据库的 JDBC (Java Database Connectivity) 驱动程序。此版本对应的是 Oracle 10g 的一部分,是专门为该数据库管理系统设计的。 ####...
NoStorageRestrict_0.5.0_5.apk
在Oracle 10g版本中,10.2.0.5.0到10.2.0.5.8的升级过程是数据库维护中的一个重要环节,涉及到一系列的更新和优化操作。这次升级主要是为了提升系统的性能、安全性和稳定性,修复已知的bug,并引入新的功能特性。 1...
赠送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-...
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 ...
本文将详细探讨Jsoncpp-0.5.0版本及其编译过程。 Jsoncpp的主要功能包括解析JSON字符串到C++对象,以及将C++对象转换为JSON格式的字符串。这个库提供了两种主要接口:一种基于对象模型,另一种基于流。对象模型接口...
三星手机固件下载工具SamFirm v0.5.0是一款专为三星设备设计的实用软件,主要用于获取和管理三星手机的官方固件更新。这款工具简化了用户寻找和下载适用于其特定三星设备的固件过程,使得普通用户也能轻松进行操作。...
patchca-0.5.0.jar,java生成图形码jar包,网上找了好久才找到,低积分给需要的人,其他人的积分收得太高了
赠送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文档:...
不过,具体细节需要查看官方发布文档以获取详细信息。 使用Oracle即时客户端,开发人员可以构建基于Oracle数据库的应用程序,而无需在客户端机器上安装完整的数据库服务器,降低了系统资源的需求和维护复杂性。这...
"autobahn-0.5.0包"是一个专门为安卓平台设计的WebSocket库,它提供了在Android应用中使用WebSocket协议的接口和工具。Autobahn库源自C++的Autobahn WebSocket库,它是一个开源项目,致力于提供高效、可靠的...
2. **版本迭代**:随着Android系统的不断升级,三星也会定期发布新的固件版本,以提供最新的功能和安全更新。 3. **国别差异**:不同国家和地区的固件可能因合规性和市场需求而有所不同,例如频段支持、无线充电功能...
1. jsoncpp-src-0.5.0.tar.gz:这是一个源代码压缩文件,使用gzip压缩算法,并且是tar打包的。你需要先使用tar命令解压,然后使用gunzip命令来进一步解压,获取JsonCpp的源代码。 2. jsoncpp-src-0.5.0:这可能是...
总之,JSONCPP-src-0.5.0 是一个强大且易用的 C++ JSON 解析库,提供源码形式的发布,兼容Visual Studio项目,便于在各种C++项目中集成和自定义。通过深入研究和使用,开发者可以提升自己在处理JSON数据方面的技能。
尽管这个包的名字是"autobahn-0.5.0",但在Android环境中,我们通常会找到针对Android优化的版本,比如一个包含Java代码的JAR文件,即"autobahn-0.5.0.jar"。 在Android应用中,"autobahn-0.5.0.jar"可能包含了...
tar -zxf jsoncpp-src-0.5.0.tar.gz cd jsoncpp-src-0.5.0 scons platform=linux-gcc 就会安装成功,依赖gcc-c++
《深入解析Java反编译工具Luyten 0.5.0》 在软件开发过程中,有时我们需要查看Java字节码对应的源代码,以便于学习、调试或逆向工程。这时,Java反编译工具就显得尤为重要。Luyten 0.5.0是一款功能强大的Java反编译...
Unity3D安装文件资源提取工具,这个工具Github上有:https://github.com/ata4/disunity/releases/download/v0.5.0/disunity_v0.5.0.zip 但是有时候翻不了墙把人急得,这个提供给大家,方便大家。是最新版本了。这个...
这是autobahn-0.5.0.jar的关于websocket的jar包