自动生成 Google 模拟方法?

Automatically Generate Google Mock Methods?

我是 C++ 和单元测试的新手,我正在学习使用 Google Mock 和 Google Test 来测试我正在使用的一些代码。不是手动编写所有 Google Mock 方法,有没有一种方法可以将 Google Mock 指向您的 class 并让它自动生成所有 Google Mock 方法你所有的功能?

有人告诉我他们认为这应该是可能的,但由于我是新手(几周前才开始学习 C++)我不知道这是否可能。

" Instead of writing all of the Gmock methods manually, is there a way to point Gmock to your class and have it automatically generate all of the Gmock methods for all of your functions?"

好吧,我大部分时间都在从界面上复制一行

 struct IFace {
     int doThefancyOperatiion(std::string s, int i) = 0;
 };

并将其更改为

 struct MockIface {
       MOCK_METHOD2(doThefancyOperatiion, int (std::string s, int i));
 };

看起来可以使用 sed 或任何其他相当不错的文本替换工具来完成。不是我知道一个特定的,它为你做这个。

引用 gmock 文档:

If even this is too much work for you, you'll find the gmock_gen.py tool in Google Mock's scripts/generator/ directory (courtesy of the cppclean project) useful. This command-line tool requires that you have Python 2.4 installed. You give it a C++ file and the name of an abstract class defined in it, and it will print the definition of the mock class for you. Due to the complexity of the C++ language, this script may not always work, but it can be quite handy when it does

https://code.google.com/p/googlemock/wiki/ForDummies

因此,您只需将 header 传递给 python 脚本,它就会输出一个随时可用的模拟实现。根据我的经验,它并不总是 100% 正确,但修复相对微不足道,所以这个解决方案是我自己使用的。