谷歌模拟和覆盖关键字

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)

Yks*_*nen 6

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 时应该更喜欢使用新方法编写新的模拟