VSCode не находит MOCK_METHOD из gmock в модульных тестах ROS - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь смоделировать определенный класс для модульного теста ROS (kineti c) с помощью gMock. Я могу заставить модульные тесты запускаться как при использовании gTest, но я получаю ошибки в VSCode, когда пытаюсь смоделировать функции.

В моем тестовом файле у меня есть

#include <gmock/gmock.h>

class Handlers
{
public:
    virtual bool onShutdown(void) { return true; };
    virtual bool onHardRestart(void) { return true; };
    virtual bool onSoftRestart(void) { return true; };
    virtual ~Handlers(){};
};

class MockHandlers : public Handlers
{
public:
    MOCK_METHOD(bool, onShutdown, (void), (override));
    MOCK_METHOD(bool, onHardRestart, (void), (override));
    MOCK_METHOD(bool, onSoftRestart, (void), (override));
};

Но ссылки на MOCK_METHOD имеют красные загогулины внизу.

int MockHandlers::MOCK_METHOD(bool, <error-type>, <error-type>, <error-type>)
explicit type is missing ('int' assumed)

Я предполагаю, что это потому, что макрос интерпретируется как объявление функции, поскольку MOCK_METHOD не может быть найден. Тем не менее, я могу управлять + щелчком по строке #include <gmock/gmock.h> без проблем, которые, кажется, говорят о том, что пути включения несколько настроены?

Работает на Ubuntu 16.04 в VSCode со следующим c_cpp_properties.json.

{
  "configurations": [
    {
      "browse": {
        "databaseFilename": "",
        "limitSymbolsToIncludedHeaders": true
      },
      "includePath": [
        "/home/alexytsu/Develop/catkin_ws/devel/include/**",
        "/opt/ros/kinetic/include/**",
        ... ${omitted my user-specific catkin_ws folders}
        "/usr/include/**"
      ],
      "name": "ROS",
      "intelliSenseMode": "gcc-x64",
      "compilerPath": "/usr/bin/clang",
      "cStandard": "c11"
    }
  ],
  "version": 4
}
...