`
JohnnyJian
  • 浏览: 106074 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Gmock 0.5.0 发布

阅读更多
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/
分享到:
评论
1 楼 JohnnyJian 2009-02-10  
xzcgeorge 写道

楼主继续努力,提供更多的文档

你的意思是提供中文版的文档吗?

相关推荐

    androidpn-client-0.5.0.zip和androidpn-server-0.5.0-bin.zip

    首先, 我们需要下载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

    ojdbc14-10.2.0.5.0 是 Oracle 公司发布的一款用于 Java 应用程序连接 Oracle 数据库的 JDBC (Java Database Connectivity) 驱动程序。此版本对应的是 Oracle 10g 的一部分,是专门为该数据库管理系统设计的。 ####...

    NoStorageRestrict_0.5.0_5.apk

    NoStorageRestrict_0.5.0_5.apk

    oracle 10.2.0.5.0 ~10.2.0.5.8

    在Oracle 10g版本中,10.2.0.5.0到10.2.0.5.8的升级过程是数据库维护中的一个重要环节,涉及到一系列的更新和优化操作。这次升级主要是为了提升系统的性能、安全性和稳定性,修复已知的bug,并引入新的功能特性。 1...

    audience-annotations-0.5.0-API文档-中英对照版.zip

    赠送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-...

    ojdbc14 Oracle JDBC Driver version 10.2.0.5.0

    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-0.5.0版本及其编译过程。 Jsoncpp的主要功能包括解析JSON字符串到C++对象,以及将C++对象转换为JSON格式的字符串。这个库提供了两种主要接口:一种基于对象模型,另一种基于流。对象模型接口...

    三星手机固件下载工具SamFirm v0.5.0

    三星手机固件下载工具SamFirm v0.5.0是一款专为三星设备设计的实用软件,主要用于获取和管理三星手机的官方固件更新。这款工具简化了用户寻找和下载适用于其特定三星设备的固件过程,使得普通用户也能轻松进行操作。...

    patchca-0.5.0.jar,java生成图形码jar包

    patchca-0.5.0.jar,java生成图形码jar包,网上找了好久才找到,低积分给需要的人,其他人的积分收得太高了

    simpleclient-0.5.0-API文档-中文版.zip

    赠送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文档:...

    basic-10.2.0.5.0-linux.zip

    不过,具体细节需要查看官方发布文档以获取详细信息。 使用Oracle即时客户端,开发人员可以构建基于Oracle数据库的应用程序,而无需在客户端机器上安装完整的数据库服务器,降低了系统资源的需求和维护复杂性。这...

    autobahn-0.5.0包特意分享下

    "autobahn-0.5.0包"是一个专门为安卓平台设计的WebSocket库,它提供了在Android应用中使用WebSocket协议的接口和工具。Autobahn库源自C++的Autobahn WebSocket库,它是一个开源项目,致力于提供高效、可靠的...

    三星固件下载工具SamFirm_v0.5.0.zip

    2. **版本迭代**:随着Android系统的不断升级,三星也会定期发布新的固件版本,以提供最新的功能和安全更新。 3. **国别差异**:不同国家和地区的固件可能因合规性和市场需求而有所不同,例如频段支持、无线充电功能...

    jsoncpp-src-0.5.0.rar

    1. jsoncpp-src-0.5.0.tar.gz:这是一个源代码压缩文件,使用gzip压缩算法,并且是tar打包的。你需要先使用tar命令解压,然后使用gunzip命令来进一步解压,获取JsonCpp的源代码。 2. jsoncpp-src-0.5.0:这可能是...

    jsoncpp-src-0.5.0

    总之,JSONCPP-src-0.5.0 是一个强大且易用的 C++ JSON 解析库,提供源码形式的发布,兼容Visual Studio项目,便于在各种C++项目中集成和自定义。通过深入研究和使用,开发者可以提升自己在处理JSON数据方面的技能。

    autobahn-0.5.0

    尽管这个包的名字是"autobahn-0.5.0",但在Android环境中,我们通常会找到针对Android优化的版本,比如一个包含Java代码的JAR文件,即"autobahn-0.5.0.jar"。 在Android应用中,"autobahn-0.5.0.jar"可能包含了...

    jsoncpp-src-0.5.0.tar.zip

    tar -zxf jsoncpp-src-0.5.0.tar.gz cd jsoncpp-src-0.5.0 scons platform=linux-gcc 就会安装成功,依赖gcc-c++

    luyten-0.5.0

    《深入解析Java反编译工具Luyten 0.5.0》 在软件开发过程中,有时我们需要查看Java字节码对应的源代码,以便于学习、调试或逆向工程。这时,Java反编译工具就显得尤为重要。Luyten 0.5.0是一款功能强大的Java反编译...

    disunity_v0.5.0 及源码

    Unity3D安装文件资源提取工具,这个工具Github上有:https://github.com/ata4/disunity/releases/download/v0.5.0/disunity_v0.5.0.zip 但是有时候翻不了墙把人急得,这个提供给大家,方便大家。是最新版本了。这个...

    autobahn-0.5.0.jar

    这是autobahn-0.5.0.jar的关于websocket的jar包

Global site tag (gtag.js) - Google Analytics