nya*_*108 2 c++ overriding googlemock
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
};
Run Code Online (Sandbox Code Playgroud)
You need to upgrade your GoogleMock to 1.10.x version to do that (unless you want to modify the library yourself).
1.10 版本有新的宏MOCK_METHOD,可以使用任何函数说明符 ( const, noexcept, override, final, ...)
MOCK_METHOD 宏用法:
struct MockI: public I
{
MOCK_METHOD(void, f, (), (override));
};
Run Code Online (Sandbox Code Playgroud)
旧的宏MOCK_METHODx仍然可以使用,但在使用 1.10.x 时应该更喜欢使用新方法编写新的模拟