Я играл с маленьким роботом Arduino, который я купил, и обнаружил, что в коде бегают несколько ошибок (которые я, возможно, разместил там, ха-ха), и хотел применить gtest к коду, чтобы найти ошибку (ы).).Проблема в том, что #include «Arduino.h» не может быть запущен на моем ПК.И это то, что мне трудно отделить от моего кода.
Я хотел бы создать тестовый исполняемый файл в моей тестовой папке, который может работать на моем ПК, но при этом хранить большую часть функционального кода в указанном выше каталоге, чтобы Arduino IDE также могла собираться.Любая помощь будет принята с благодарностью.
Структура:
<Folder>
-ArduinoBuild.ino
-Class.h
-Class.cpp
-<test folder>
--test.cpp
--CMakeList.txt
Здесь начинается проблема, Arduino.h вводится в сборку
Class.h
#ifndef CLASS_H_
#define CLASS_H_
#include "Arduino.h"
class Class{
public:
int Some_Attribute = 0;
void member_function();
};
#endif
Class.cpp
#include "Class.h"
void Class::member_function(){
Some_Attribute = Some_ArduinoFunc(this->Some_Attribute);
}
Теперь, если бы я мог вытащить Arduino.h из моей сборки, я мог бы поместить фиктивные функции в свой тестовый скрипт, чтобы заполнить пробел, но я бы хотел сохранить Arduino.h где-нибудь впроцесс сборки, поэтому мне не нужно добавлять его каждый раз, когда я хочу собрать для своего Arduino.Я пробовал несколько вещей, одна из которых - перемещение файла #include "Arduino.h" в файл .ino в надежде, что он будет передан в файл Class.h / cpp при сборке для Arduino, и это не удалось.
test.cpp
// Class_test.cpp
#include <gtest/gtest.h>
#include "../Class.cpp"
TEST(buildbin, member_function) {
Class car;
car.member_function(1);
ASSERT_EQ(1, car.Some_Attribute);
}
Опять же, любая помощь с этим будет принята с благодарностью, спасибо за ваше время.
POST SOLUTION Обновления: Вот пример заголовкак тому, что я должен был ввести в сценарии в родительской папке:
#ifndef ARDUINO
#include<cmath>
#define floor std::round
void delay(int i){}
#endif
и получить доступ к файлам для имитации файлов библиотеки, все, что вам нужно сделать, это:
#include "test/FakeLib.XX"