Почему синтаксис MOCK_METHOD не работает в GMock? - PullRequest
0 голосов
/ 27 октября 2019

Я даже не начал тестирование, и у меня возникают некоторые синтаксические проблемы с макросом GMOCK MOCK_METHOD, хотя я должным образом следую документации GMock. Может ли это быть проблемой компилятора? У меня есть:

MingGW (GCC 4.9.2)

Googletest 1.10.x

class SimpleClass {

public:
    virtual int simpleFirstFunction(int a, int b) { return (a + simpleSecondFunction(b)); }
    virtual int simpleSecondFunction(int b) { return (2 * b); }
    virtual ~SimpleClass();
};


class MockSimpleClass :public SimpleClass {
    MOCK_METHOD(int, simpleSecondFunction, (int a, int b), (override));
};

Я вижу 3 ошибки компилятора:

Ошибка-1: об имени функции

MockSimpleClass.cpp: 18: 24: ошибка:

'simpleSecondFunction' не является типом MOCK_METHOD (int, simpleSecondFunction (int a,int b), (переопределить));

Ошибка-2: о входных параметрах

MockSimpleClass.cpp: 18: 46: ошибка:

ожидаемый идентификатор перед '(' токен MOCK_METHOD (int, simpleSecondFunction, (int a, int b), (переопределить));

Ошибка-3: О скобках вокруг "переопределения"

MockSimpleClass.cpp: 18: 60: ошибка:

ожидаемый идентификатор перед '(' токен MOCK_METHOD (int, simpleSecondFunction (int a, int b), (переопределить));

1 Ответ

1 голос
/ 27 октября 2019

Похоже, макрос MOCK_METHOD не определен. Правильно ли вы указали свой путь включения и добавили директиву #include "gmock/gmock.h" вверху файла? Вам также не хватает public спецификатора доступа, а количество аргументов неверно для функции.

Это должно работать, если у вас есть заголовки gmock в вашем пути включения:

#include "gmock/gmock.h"

class SimpleClass {

public:
    virtual int simpleFirstFunction(int a, int b) { return (a + simpleSecondFunction(b)); }
    virtual int simpleSecondFunction(int b) { return (2 * b); }
    virtual ~SimpleClass();
};


class MockSimpleClass : public SimpleClass {
public:
    MOCK_METHOD(int, simpleSecondFunction, (int b), (override));
};
...