Как построить и запустить тесты AUnit

testing

Я нашел этот пример о том, как создать проект с тестами 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

Обсуждение

Я тоже никогда не находил приемлемого решения для этого. Ближе всего я получил "mkdir ~/Документы/Arduino/библиотеки/некоторый компонент "" cp-R src/* ~/Документы/Arduino/библиотеки/некоторый компонент/", а затем "включить<SomeComponent.h>" в файлы test .ino. Это раздражает, потому что это означает, что вы на самом деле не можете провести модульное тестирование библиотеки **перед** ее установкой. Я подозреваю, что именно так делал автор тетушки/тетушки, хотя, прежде чем они переключились с Arduino IDE/arduino-cli на EpoxyDuino, учитывая, что все примеры тетушки используют стиль "#включить<Foo.h>"., @AlwaysLearning


1 ответ


1

В конце концов я переключился на PlatformIO. Мне потребовалось меньше получаса, чтобы переставить исходники, исправить некоторые проблемы с компилятором, собрать и прошить мое устройство. Тесты работают очень хорошо. Вам просто нужно хранить проверенные исходники в папке lib. Я даже получил пакет GoogleTest, чтобы использовать gmock в своих тестах.

,