Google Mock и переопределить ключевое слово - PullRequest
0 голосов
/ 19 февраля 2020

Существует ли в 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
};

Ответы [ 2 ]

3 голосов
/ 19 февраля 2020

Для этого вам нужно обновить 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

.
0 голосов
/ 19 февраля 2020

Просто выведите свой макет из базового чистого виртуального класса.

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

И вы получите ошибку компиляции, если сигнатура f будет изменена только в базовом классе. Не требуется обновление или ручное изменение gmock.

...