Есть ли тестовая среда для ардуино?

testing

Я работаю над большим проектом Arduino, в котором задействовано множество проприетарных библиотек. Следовательно, нам нужны тестовые сценарии, чтобы убедиться, что каждая библиотека работает. Существует ли среда тестирования для Arduino, аналогичная CPPUnit, JUnit, Cunit и т. д.? Желательно также иметь возможность имитировать Arduino.

РЕДАКТИРОВАТЬ: с помощью «Симулятора Arduino» мне нужно только то, что позволяет наблюдать за локальными переменными, глобальными переменными, различными значениями регистров (как минимум статус ВХОДА/ВЫВОДА контактов, что вводится или выводится) и поддельные входы в различные контакты. Таким образом, необходимо смоделировать только сам Arduino, а не внешние аппаратные компоненты, такие как светодиоды, кнопки, часы реального времени, двигатели и т. д.

, 👍1

Обсуждение

afaik такого нет ... для некоторых библиотек я создал свои «заглушки», причем некоторые умнее других для тестирования моего конкретного приложения., @Michel Keijzers

Конечно, вы можете смоделировать Arduino, но это будет иметь мало значения. Вам нужно смоделировать всю систему, включая внешние раздражители. И эта система *уникальна для вас* - так кто же будет писать для нее симулятор...?, @Majenko

Да ... я имитировал использование библиотеки DMX, чтобы показать все подключаемые источники света, которые будут отображаться на ПК, вместо того, чтобы включать и выключать наборы пикселей ... так что в вашем случае вам, возможно, придется заглушить его таким способом, который подходит именно вам. Хорошим началом будет написать все библиотеки, НЕ связанные напрямую с Arduino или аппаратным обеспечением, протестировать их на ПК и, когда они будут работать правильно, скопировать их в проект Arduino., @Michel Keijzers

В PlatformIO был какой-то тест --target, но я не исследовал, как его можно использовать или что-то в этом роде..., @KIIV

Почему бы вам не использовать какую-либо общую среду модульного тестирования C++ и не предоставить смоделированную/поддельную/макетную версию библиотек Arduino? В конце концов, у вас нет прямого аппаратного доступа к ним., @the busybee

@thebusybee, потому что Arduino IDE использует собственный компилятор C++, в котором нет большинства библиотек C++, доступных в других компиляторах C++ (например, g++). Это включает в себя CPPUnit и объектно-ориентированную обработку ошибок (операторы try, catch, throw и объекты ошибок). Хотя библиотека assert доступна, она не идеальна. Кроме того, большинство наших библиотек имеют прямой доступ к оборудованию., @HarrisonO

Я не имею в виду запускать тесты на Arduino. Используйте свой ПК. Вы хотите протестировать свой код, а не компилятор. -- Итак, вам нужно протестировать не только приложение, но и библиотеки, использующие прямой доступ к оборудованию. Ну, это не имеет ничего общего с Arduino., @the busybee


1 ответ


Лучший ответ:

1

Желательно также иметь возможность моделировать Arduino.

Как сказано в комментариях, одной симуляции Arduino в большинстве случаев недостаточно, потому что вам также потребуется симулировать все подключенные компоненты. Просто смоделировать Arduino — довольно сложная задача. Вы можете найти симуляторы Arduino, но они всегда поддерживают только довольно небольшой набор дополнительного оборудования (в основном, такие как переключатели, светодиоды, зуммеры и т. д.). Я предполагаю, что проприетарные библиотеки, которые вы используете, предназначены для подключения к каким-то дополнительным устройствам (возможно, тоже проприетарным), что будет довольно сложно. Эти устройства, скорее всего, не будут поддерживаться ни одним из симуляторов Arduino.

Также: Arduino — это платформа для начинающих и быстрых прототипов. Те, кто занимается профессиональными вещами, такими как проектирование продукта (а это в основном те, которым нужны такие наборы тестов), быстро отойдут от платформы Arduino, чтобы программировать уровень абстракции ниже непосредственно на платформе AVR. Так зачем этим людям набор тестов для Arduino?

Моделирование электронных схем может быть очень сложным, поэтому вы не увидите программу, которая сможет обрабатывать все ваши схемы, включая такие сложные части, как датчики с коммуникационным интерфейсом. Это означает, что вы можете протестировать свою схему и соответствующий код (который взаимодействует со схемой) только на реальном оборудовании. Некоторые IDE (например, PlatformIO) могут давать вам возможность писать тестовые скетчи, но вам все равно придется загружать их на реальное оборудование и наблюдать за результатами самостоятельно.

Код, не зависящий от аппаратного обеспечения Arduino, может быть протестирован на ПК, но в большинстве случаев это не так, поскольку аппаратное обеспечение Arduino/микроконтроллеров слишком близко. Конечно, вы можете написать имитирующий код для частей Arduino, но часто это даже более утомительно, чем просто использовать аппаратное обеспечение.


Поскольку реальной среды тестирования Arduino не существует, вам остается только писать собственные тестовые скетчи и использовать хорошую IDE (не Arduino IDE) для их организации.

,