我对 C++ 和单元测试相当陌生,我现在正在学习使用 Google Mock 和 Google Test 来测试我正在使用的一些代码。有没有一种方法可以将 Google Mock 指向您的类并让它自动为您的所有函数生成所有 Google Mock 方法,而不是手动编写所有 Google Mock 方法?
有人告诉我他们认为这应该是可能的,但由于我是新手(几周前才开始学习 C++),我不知道这是否可能。
引用gmock文档:
如果这对你来说工作量太大了,你会发现 gmock_gen.py Google Mock 的 scripts/generator/ 目录中的工具(由 cppclean 项目)很有用。该命令行工具要求您 安装了Python 2.4。你给它一个 C++ 文件和一个名称 其中定义的抽象类,它会打印该类的定义 为您模拟课。由于C++语言的复杂性, 脚本可能并不总是有效,但当它有效时它会非常方便
https://code.google.com/p/googlemock/wiki/ForDummies
因此,您只需将标头传递给 python 脚本,它将输出一个可供使用的模拟实现。根据我的经验,它并不总是 100% 正确,但修复相对简单,所以这个解决方案是我自己使用的。
“有没有办法将 Gmock 指向您的类并让它自动为您的所有函数生成所有 Gmock 方法,而不是手动编写所有 Gmock 方法?”
嗯,我大部分时间所做的就是从界面复制一行
struct IFace {
int doThefancyOperatiion(std::string s, int i) = 0;
};
并将其更改为
struct MockIface {
MOCK_METHOD2(doThefancyOperatiion, int (std::string s, int i));
};
看起来可以使用
sed
或任何其他相当不错的文本替换工具来完成。不,我不知道有一个特定的,可以为你做到这一点。
这个脚本:I2Mock对于自动生成 Google 和 Turtle 模拟很有帮助。