阅读更多

5顶
0踩

编程语言

原创新闻 Gmock 0.5.0 发布

2009-01-20 23:00 by 见习记者 JohnnyJian 评论(1) 有3858人浏览
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/
5
0
评论 共 1 条 请登录后发表评论
1 楼 icopy 2009-01-21 09:14
支持一下~~~

发表评论

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

相关推荐

  • 找回无线网络连接密码

    用久了的无线网络密码忘记了,找回无线网络连接密码

  • 什么是主密钥、工作密钥、会话密钥、PIN密钥?

    什么是主密钥? 主秘钥,即(Terminal Master Key) TMK,主要作用是用来验证工作秘钥是否合法,以及加密TPK(终端PIN密钥),保证TPK在传输线路上的安全性。一般情况下是人工在POS设置或者通过IC卡导入,TMK被写入密钥保护芯片,也就是我们说的SE,其具有开机程序自毁功能,能很好的保护TMK的安全性,主秘钥是和每一台POS相关联的,即主秘钥和Pos设备是一一对应的,如我们现...

  • 使用公开密钥机制进行会话密钥

    当我们在进行通信的时候,常常需要在C/S两端分配一个会话密钥,然后利用对称密码算法对通信的数据加密,当然了,也可以使用非对称加密算法,但是非对称加密会使加密速度降低了一个数量级,因此并不适用。那么如何安全的在不安全的信道中分发会话密钥呢? 有两种方式,一种使用共享密钥机制,这样的协议很多,比如D-H密钥分配协议、kerberos认证协议等等。但是使用共享密钥进行会话密钥的分发很麻烦,而且还有各种漏

  • 谈谈从key material还原出key

    还原出公钥

  • aes key iv从mysql,AES解密服务器返回的数据,有密钥和IV,如何解密?

    string ServerRetureMessage = "w1rt5RuOlgQirdbMUGPqOC4OdeKCAN9nauRn8j2tf1bRfapZBncAoq6vgZMqM4uhydhYoqCSvtX8cpDSwzUaLcFvx9bG3MmSAlTXH2scHjE=";//编码到Base64//使用AES解密public static string AESDecryption(byte[...

  • 【基础原理】会话秘钥

    【前言】           最近在做民生银行密盾的项目, 业务中反复听到会话秘钥加密与用户秘钥加密。 比较好奇会话秘钥是什么,所以查询了一下相关的概念。【正文】          会话密钥(session key)也称为 数据加密密钥 或者工作密钥,是保证用户跟其它计算机或者两台计算机之间安全通信会话而随机产生的加密和解密密钥,它可由通信用户之间进行协商得到。它一般是动态地、仅在需要进行会话数据...

  • 【密码产品篇】商用密码产品的密钥体系结构小结

    商用密码产品的密钥体系结构笔记小结—【蘇小沐】

  • 密钥的分类

    一 用于确保机密性的密钥和用于认证的密钥 对称密码和公钥密码都是用于确保机密性的密钥。如果不知道解密的合法密钥,就无法得知明文的内容。 相对地,消息认证码和数字签名所使用的密钥,则是用于认证的密钥。如果不知道合法的密钥,就无法篡改数据,也无法伪装本人的身份。 二 会话密钥与主密钥 下面来关注一下密钥被使用的次数。 当访问以https://开头的网页时,Web服务器和浏览器之间会进行基于S...

  • 微信小程序利用code获取会话密钥session_key,进而解密获取用户唯一标识openid和用户在开放平台的唯一标识符unionid

    多读多写多记录,多学多练多思考。----------- Banana• Banuit Gang(BUG香柚帮) 我们都知道,同一个微信用户的公众号和小程序等的unionid是相同的,openid是不同的,有时候我们如果想要实现例如利用小程序往公众号推送消息,就得先获取unionid,然后找到公众号的openid,才可以实现这个功能,而获取unionid的前提条件就是你必须在微信开放平台绑定...

  • [引]生成加密和解密的密钥

    1.对称密钥2.不对称密钥3.将非对称密钥存储在密钥容器中4.将非对称密钥存储在密钥容器中示例===============================创建和管理密钥是加密过程的一个重要部分。对称算法要求创建必须对不应解密数据的任何人保密的密钥和初始化向量 (IV)。不对称算法要求创建一个公钥和一个私钥。公钥可以对任何人公开,而私钥必须只为将要对用公钥加密的数据进行解密的一方知道。

  • 文件加密CryptEncrypt和导出密钥CryptExportKey学习笔记

    刚刚接触C++,使用CryptEncrypt来对一个文件进行加密,代码都是MSDN上的,一开始使用起来比价困难,这里对代码解读和分享一下。 #include <tchar.h> #include <stdio.h> #include <windows.h> #include <wincrypt.h> #include <conio.h>#pragma comment (lib, "advapi32"

  • vc++网络安全编程范例(15)-导出会话密钥

    密钥(Cryptographic key)是一个基于RSA公匙加密体系的邮件加密软件。它能对你的邮件加上数字签名从而使收信人可以确信邮件是你发来的。它让你可以安全地和你从未见过的人们通讯,事先并不需要任何保密的渠道用来传递密匙。它采用了:审慎的密匙管理,一种RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等,还有一个良好的人机工程设计。它的功能强大,有很快的速度。密钥(Crypt...

  • 使用WinCrypt进行简单的对称加密实例

    使用WinCrypt进行简单的对称加密实例2008年12月16日星期二微软在wincrypt.h中定义了大量的加解密算法的API,方便了软件加解密的实现,可以使我们不必关注密码学的算法,就可以实现高效率的软件加密。下面通过一个类,对API实现简单的封装。详细代码如下: 头文件:MyCryptOpt.h#pragma once #include "windows.h"

  • API接口-RSA加密算法

    PS:我是翻阅了网上大部分资料,进行整合,得出以下文章。(不是原创,只是进行了整合,方便理解。) 1.什么是RSA加密 RSA (详见维基百科)算法是现今使用最广泛的公钥密码算法,也是号称地球上最安全的加密算法,与 md5 和 sha1 不同,到目前为止,也只有极短的RSA加密被破解。 那么什么是公匙密码算法呢,根据密钥的使用方法,可以将密码分为对称密码和公钥密码,接下来我们来简单说明下它们两个。...

Global site tag (gtag.js) - Google Analytics