阅读更多

8顶
0踩

编程语言

原创新闻 Gmock 0.7.0 发布

2009-03-22 10:14 by 见习记者 JohnnyJian 评论(3) 有5598人浏览
Gmock是一个基于Groovy语言的mock框架。Gmock利用了Groovy语言的特性,提供了简洁可读的语法,并且用Gmock mock出来的对象可以在Java代码中使用,所以你可以使用Java编写代码而使用Groovy和Gmock编写测试。

本版本加入了以下特征:

1. 设定方法调用的严格顺序(strict ordering)。这是通过ordered闭包实现的。下面是一个被缓存的数据库的例子:

def database = mock()
def cache = mock()
ordered {
  database.open()
  cache.get("select * from cat").returns(null)
  database.query("select * from cat").returns(["cat1", "cat2"])
  cache.put("select * from cat", ["cat1", "cat2"])
  database.close()
}
play {
  ...
}


2. 只mock一个对象的部分方法(partial mocking)。这可以通过对一个已有对象调用mock()方法来实现。下面是mock一个grails的controller的例子:

def controller = new SomeController()
mock(controller).params.returns([id: 3])
play {
   assertEquals 3, controller.params.id
}


3. 支持使用正则表达式作为方法名字。例如:

def mock = mock()
mock./set.*/(1).returns(2)
play {
  assertEquals 2, mock.setSomething(1)
}


Gmock 0.7.0是最后一个支持Groovy 1.5.x的版本,下一个版本开始将只支持Groovy 1.6.x。

更详细的信息请访问http://gmock.org/http://code.google.com/p/gmock/
8
0
评论 共 3 条 请登录后发表评论
3 楼 JohnnyJian 2009-03-22 16:24
amonlei 写道

动态语言其实没必要mock,只要调用前,hack掉原来的实现,返回一个值便可

的确可以hack,不过比较写起来比较麻烦,gmock就是为了简化这些mock的过程。
譬如,如果是hack的话,你得这样写:
something.metaClass.fun = { a, b ->
  assert 1 == a
  assert 2 == b
  return 3
}
而用gmock的话,你只需要这样写:
mock(something).fun(1, 2).returns(3)
2 楼 whaosoft 2009-03-22 13:31
sun被收购了
是不是我该学这个东西了 看好像很火的样子
1 楼 amonlei 2009-03-22 11:11
动态语言其实没必要mock,只要调用前,hack掉原来的实现,返回一个值便可

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • frameset tiles之比较和最佳选择

    首先我要说明一下,下面的内容是基于同学们了解frameset和tiles的基础上描述的。 我们布局页面的时候,经常在是采用frameset还是tiles中摇摆。 首先举个布局页面的例子:在这个例子中,有banner、header、main和...

  • Apache Tiles 学习(一)、复合视图模式

    摘要: 项目需要使用Apache Tiles,现在学习下并留下相关记录,以待或续查看及大家相互学习! Apache Tiles 是什么? A free open-sourced templating framework for modern Java applications. Based upon ...

  • Tiles入门及项目实战

     Apache Tiles是一个模板布局框架。最初是为了简化Web应用界面开发,如今已不限于JavaEE Web环境。  Tiles允许开发人员定义页面片段,它们在运行时会组装成一个完整的页面。这些片段,或者叫“瓷砖”(tiles本意即...

  • tiles-defs.xml 文件的基本用法

    如果大多数页面的布局基本相同我们甚至可以使用一个jsp文件根据不同的参数调用不同的body. 二:Tiles配置和基本配置文件介绍 Tiles有一个配置文件:tiles-defs.xml tiles-defs.xml定义了每一个页面的组成元素和形式。...

  • Struts框架中 's Tiles使用入门教程

    Struts框架中 s Tiles使用入门教程Tiles使用入门 作者:孤魂一笑 一:说明Struts1.1以后增加了Tiles包使得struts在页面的处理方面多了一种选择.并且更容易实现代码的重用。Tiles中对页面的划分有点象jakarta的另外一...

  • Tiles配置

    一:说明Struts1.1以后增加了Tiles包使得struts在页面的处理方面多了一种选择.并且更容易实现代码的重用。Tiles中对页面的划分有点象jakarta的另外一个项目Turbine中的TDK。增加了layout的概念.其实就是把一个页面...

  • Struts 's Tiles使用入门

    Tiles使用入门 作者:孤魂一笑 一:说明Struts1.1以后增加了Tiles包使得struts在页面的处理方面多了一种选择.并且更容易实现代码的重用。Tiles中对页面的划分有点象jakarta的另外一个项目Turbine中的TDK。增加了...

  • struts1.2中的tiles-defs.xml 文件的基本用法

    Struts1.1以后增加了Tiles包使得struts在页面的处理方面多了一种选择.并且更容易实现 代码的重用。 Tiles中对页面的划分有点象jakarta的另外一个项目Turbine中的TDK。增加了layout的概念. 其实就是把一个页面划分...

  • 在CSS布局中让Floats轻拂

    为什么不停止使用浮点数而去掉复杂度呢? Here’s a collection of CSS properties and values that have been avoided in the past due to boring compatibility issues, but are now widely enough supported ...

  • 关于布局

    写jsp的布局方式有不少,就我所知,我们可以通过frameset,tiles,iframe,SiteMesh来实现。 我在写网页的时候大多是用的前面两种,后面的基本是很少用的。不过SiteMesh的强大之处还是值得大家去体验。最近越来越...

  • sitemesh 使用感受

    从.net转java web做项目不让用iframe,这时我考虑换一个布局框架去用,比较成熟通用的目前是Tiles和siteMesh框架,Tiles是阿帕奇开发出来的,这一点大家都会感觉比较可靠毕竟这家公司短时间不会倒...

  • Html

    宽度可以使用:点阵,%,*,可以混合使用。但是*只能使用一次。 案例: < frameset rows = "100,*,20%" border = "0" > < frameset rows = "10%,*,10%" border = "0" > 纵向分区属性:将页面按纵向分区。...

  • thymeleaf学习总结

    1.什么是thymeleaf Thymeleaf是现代化服务器端的Java页面模板引擎,不同于JSP和FreeMarker,Thymeleaf的语法更加接近HTML Thymeleaf是面向Web和独立环境的现代服务器端Java模板引擎。 Thymeleaf的主要目标是为您的...

  • java基础 - 2

    JAVA编程语言和JDBC 编写正确且遵守规范的Java程序,可以无需重新编译就在任何启用Java技术的平台上运行。Java编程语言彻底地进行了规定。...JAVA编程语言和JDBC一起使用,可以给编写数据库应用程序提供正确

  • polylearn-0.1.dev0-cp35-cp35m-win32.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

  • 基于Simulink的语音信号降噪与增强.docx

    基于Simulink的语音信号降噪与增强.docx

  • java资源Java条形码生成库 Barcode4J

    java资源Java条形码生成库 Barcode4J提取方式是百度网盘分享地址

  • pgmagick-0.7.5-cp27-cp27m-win32.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

  • pendulum-2.1.2-cp310-cp310-win32.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

  • com.bishua666.luxxx1.apk

    com.bishua666.luxxx1.apk

Global site tag (gtag.js) - Google Analytics