谷歌模拟和覆盖关键字
Google Mock and override keyword
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
,它可以使用任何函数说明符(const
、noexcept
、override
、final
…(
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。
相关文章:
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- C++中的"inline"关键字
- 如何确保C++函数在定义之前声明(如override关键字)
- 使用ios:ate写入到流会覆盖现有文件
- 我可以重新分配/覆盖std::字符串吗
- 叮叮当当在修复时插入多个"覆盖"说明符
- 谷歌模拟和覆盖关键字
- TMap::Emplace() 在应用现有密钥时会覆盖吗?
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 此测试()中发生了什么意外过程?为什么总是覆盖 ch[0 1 2..]?
- 当我从下面的代码中删除关键字 virtual 时,它可以正常工作,否则会出现错误。在这里"virtual"字的意义是什么?
- 是否有一种有效的方法来搜索队列中的关键字并覆盖其值
- 'override'关键字只是对被覆盖的虚拟方法的检查吗?
- 在 C++11 中同时使用虚拟关键字和覆盖关键字是否有任何细微之处
- 将覆盖关键字和最终关键字与相同的成员函数一起使用是否有用
- 抑制或覆盖关键字 NULL
- 视觉 是否可以覆盖子类中的函数C++而无需对抽象的父类中的函数使用 virtual 关键字
- 覆盖register关键字
- 使用关键字和不带关键字覆盖函数"virtual"