`
JohnnyJian
  • 浏览: 104388 次
  • 性别: 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 写道

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

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

相关推荐

Global site tag (gtag.js) - Google Analytics