[Google Mock中是否有宏,可通过将f()
关键字附加到宏替代项来确保对override
签名进行编译时检查:
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
,它可以使用任何功能说明符(MOCK_METHOD
,const
,noexcept
,override
,...]
final
宏用法:
MOCK_METHOD
仍然可以使用旧的宏
struct MockI: public I { MOCK_METHOD(void, f, (), (override)); };
,但在使用1.10.x时,应该更喜欢使用新的方法编写新的模拟]