谷歌模拟和覆盖关键字

Google Mock and override keyword

本文关键字:关键字 覆盖 模拟 谷歌      更新时间:2023-10-16

Google Mock中是否有宏通过在宏替换后添加override关键字来确保在编译时检查f()的签名:

struct I
{
virtual void f() = 0;
};
struct MockI
{
MOCK_METHOD0(f, void()); // this will define another function if f signature changes 
// leading to weird runtime test failures
};

您需要将GoogleMock升级到1.10.x版本才能做到这一点(除非您想自己修改库(。

1.10版本有新的宏MOCK_METHOD,它可以使用任何函数说明符(constnoexceptoverridefinal…(

MOCK_METHOD宏用法:

struct MockI: public I
{
MOCK_METHOD(void, f, (), (override));
};

旧的宏MOCK_METHODx仍然可以使用,但当使用1.10.x 时,应该更喜欢使用新方法编写新的mock

只需从基本纯虚拟类派生mock。

struct MockI : I
{
MOCK_METHOD0(f, void()); 
};

若仅在基类中更改f的签名,则会出现编译错误。无需升级或手动更改gmock。