Как построить и запустить тесты AUnit
Я нашел этот пример о том, как создать проект с тестами AUnit: https://www.thecoderscorner.com/electronics/microcontrollers/embedded-testing/getting-started-unittesting-arduino/
В соответствии с ним и проектами, которые я нашел на github, моя структура проекта должна выглядеть следующим образом:
Application
src
SomeComponent.cpp
SomeComponent.h
tests
TestSomeComponent
TestSomeComponent.ino
Application.ino
Но когда я пытаюсь запустить TestSomeComponent.ino с Arduino IDE или VSC с плагином Arduino, он не видит содержимого папки src. Я предполагаю, что он рассматривается как отдельный скетч. Как правильно строить и запускать тесты?
[править] Некоторый контекст (не уверен, что это имеет значение):
- Наша целевая плата ESP32 DevKit v1
- Оптимально если бы наши разработчики могли проводить тесты на машинах под управлением Windows и Linux
- Я еще не добрался до непрерывной интеграции. Я начну автоматизацию, как только у меня будет какое-либо тестовое построение и запуск
[edit 2] Я пробовал инструменты командной строки. Запустил тетю и попробовал вот так (надеясь на какую-то автомагию, сделанную инструментами):
me@mypc:~/workspace/Application/Application/tests$ auniter.sh test esp32:/dev/ttyUSB0 TestSomeComponent/
Я пробовал любую разумную комбинацию путей в директиве include path, например:
#include "SomeComponent.h"
#include "app/SomeComponent.h"
#include "../../src/app/SomeComponent.h"
#include <SomeComponent.h>
#include <app/SomeComponent.h>
#include <../../src/app/SomeComponent.h>
Но я продолжаю получать это:
TestSomeComponent:4:42: fatal error: ../../src/app/SomeComponent.h: No such file or directory
1 ответ
В конце концов я переключился на PlatformIO. Мне потребовалось меньше получаса, чтобы переставить исходники, исправить некоторые проблемы с компилятором, собрать и прошить мое устройство. Тесты работают очень хорошо. Вам просто нужно хранить проверенные исходники в папке lib. Я даже получил пакет GoogleTest, чтобы использовать gmock в своих тестах.
- Можно ли программировать для Ардуино без реальной платы?
- SPI: проверить, подключив MOSI к MISO
- Как скомпилировать программу Arduino для настольного ПК
- Ardutester Millenium I2c Lcd ничего не показывает!
- Может ли arduino-cli проверять скетчи?
- Куда должны идти модульные тесты в Arduino IDE
- Прерывание активируется, как только я вставляю перемычку в порт
- Есть ли тестовая среда для ардуино?
Я тоже никогда не находил приемлемого решения для этого. Ближе всего я получил "mkdir ~/Документы/Arduino/библиотеки/некоторый компонент "" cp-R src/* ~/Документы/Arduino/библиотеки/некоторый компонент/", а затем "включить<SomeComponent.h>" в файлы test .ino. Это раздражает, потому что это означает, что вы на самом деле не можете провести модульное тестирование библиотеки **перед** ее установкой. Я подозреваю, что именно так делал автор тетушки/тетушки, хотя, прежде чем они переключились с Arduino IDE/arduino-cli на EpoxyDuino, учитывая, что все примеры тетушки используют стиль "#включить<Foo.h>"., @AlwaysLearning