自动生成 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% 正确,但修复相对微不足道,所以这个解决方案是我自己使用的。
我是 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% 正确,但修复相对微不足道,所以这个解决方案是我自己使用的。