Я пытаюсь смоделировать определенный класс для модульного теста 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
}