Google C++ Mocking框架
来源:互联网 发布:索尼xperia xzp知乎 编辑:程序博客网 时间:2024/04/30 22:10
Google开源其C++ Mocking框架
作者 Abel Avram 译者 张龙 发布于 2008年12月18日 上午9时49分
几个月前Google开源了其C++测试框架,现在Google又基于BSD协议将其C++ Mocking框架Google Mock开源。
在Google内部Google Mock被用在100多个项目中,根据Google软件工程师Zhanyong Wan所说,Google Mock的灵感来自于jMock和EasyMock。该框架可用在Linux、Windows及Mac OS X上,面向C++开发者。Zhanyong给出了一个mocking的例子:
class TaxServer { // Returns the tax rate of a location (by postal code) or -1 on error.
virtual double FetchTaxRate(
const string& postal_code) = 0;
virtual void CloseConnection() = 0;
};class MockTaxServer : public TaxServer { // #1
MOCK_METHOD1(FetchTaxRate, double(const string&));
MOCK_METHOD0(CloseConnection, void());
};
TEST(ShoppingCartTest, StillCallsCloseIfServerErrorOccurs) {
MockTaxServer mock_taxserver; // #2
EXPECT_CALL(mock_taxserver, FetchTaxRate(_)).WillOnce(Return(-1)); // #3
EXPECT_CALL(mock_taxserver, CloseConnection());
ShoppingCart cart(&mock_taxserver); // #4
cart.CalculateTax(); // Calls FetchTaxRate()
// and CloseConnection().
} // #5
从接口派生出mock类。对于每个虚方法,计算它的参数个数、名字和结果n,然后使用MOCK_METHODn进行定义,其参数就是方法的名字和类型。
创建该mock类的一个实例。当你使用真实对象时,实际使用的就是该mock对象。
设置该mock对象的期望(是否会被使用?将要做什么?)。例如,第一个EXPECT_CALL表示会调用FetchTaxRate()并返回一个错误。underscore (_)是一个匹配器(matcher),表示参数可以是任何值。Google Mock有很多可用的匹配器,你可以使用他们精确指定参数是什么。你还可以定义自己的匹配器或者使用一个确定的值。
使用mock对象的测试代码。如果某个mock方法的调用次数超过了期望值或是参数不正确你就会立刻看到一个错误。
当mock对象销毁时,系统会检查其上的期望是否都满足了。
这里是一些有用的链接:Google Mock主页、完整的文档及二进制下载。Google Mock for Dummies是对Google Mock的一个快速介绍,它还包含一些例子和说明。
查看英文原文:Google Has Open-Sourced Their C++ Mocking Framework
- Google C++ Mocking框架
- Google开源了其C++测试框架 C++ Mocking框架
- Java mocking 单元测试框架介绍
- Mocking的概念及常见Mocking框架概述
- Mocking
- Google C++ Mocking Framework使用简介
- Google C++ Mocking Framework使用简介 安装:
- Google C++ Mocking Framework for Dummies 翻译
- Google C++ Mocking Framework Cheat Sheet译文
- Google C++ Mocking Framework Cheat Sheet
- What Is Google C++ Mocking Framework?
- MockMe:一个新的JavaScript mocking框架
- 【Study Record】Using Google Mocking Framework in Unit Test ( Advanced )
- Google Mock启蒙篇 [2] (Google C++ Mocking Framework for Dummies 翻译)
- Google Mock启蒙篇 [1] (Google C++ Mocking Framework for Dummies 翻译)
- Google 开源 C/C++ 版 MapReduce 框架
- Google 开源 C/C++ 版 MapReduce 框架
- Google开源C/C++版MapReduce框架
- C#.NET 中英文对照文献
- Ant使用[待整理]
- DBUnit-抄袭姚博文同志的文章
- 排版引擎列表
- Flash与数学:心形线
- Google C++ Mocking框架
- 编程的成功经验
- 充满激情的斗争
- Linux(Fedora)下ls命令的简单实现
- 进程和线程的区别
- 2010-03-17
- Tip - 注意:32位程序访问64位系统上的Windows注册表
- Environment.GetFolderPath
- 求学ug