Gmock初体验

发表于:2009-9-25 17:01

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing博客转载

  (五)多次模拟

  对于一些特定方法,有可能需要调用多次。如果多次重复设置会产生不必要的麻烦,可以通过相应的方法来设置模拟次数。

1. mockLoader.load(2).returns(3).atLeastOnce() 
2. play { 
3.     assertEquals 3, mockLoader.load(2) 
4.     assertEquals 3, mockLoader.load(2) 
5. } 

  这里的atLeastOnce()表示该方法至少会被调用一次。还有如下几种方法用来设置调用次数。

  (六)顺序调用

  如果一些方法的执行顺序有严格的要求,可以使用ordered方法来确定方法的调用顺序。

1. def database = mock() 
2. def cache = mock() 
3. ordered { 
4.   database.open() 
5.   cache.get("select * from cat").returns(null) 
6.   database.query("select * from cat").returns(["cat1", "cat2"]) 
7.   cache.put("select * from cat", ["cat1", "cat2"]) 
8.   database.close() 
9. } 

  (七)方法的正则表达方式模拟

  如果一些需要模拟的方法名有一些规则,可以使用正则表达式匹配的方法批量模拟。

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

  (八)默认模拟

  Gmock默认实现了equals()、hashCode()和toString()的模拟。

  * never() 从来不被调用

  * once() 默认情况,只被调用一次

  * atLeastOnce() 至少被调用一次

  * atMostOnce() 最多一次(0或1)

  * stub() the expectation can be called anytime

  * times(n) 被调用n次。

  * times(m..n) 被调用m-n次。

  * atLeast(n) 被调用至少n次

  * atMost(n) 被调用至多n次

相关阅读:

使用Groovy简化单元测试

33/3<123
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号