Как может я модульный тест код Ардуино?

$this->db->where('g_total >',0);

Вы можете попробовать это

168
задан Peter Mortensen 23 September 2012 в 22:47
поделиться

6 ответов

In the absence of any pre-existing unit test frameworks for Arduino, I have created ArduinoUnit. Here's a simple Arduino sketch demonstrating its use:

#include <ArduinoUnit.h>

// Create test suite
TestSuite suite;

void setup() {
    Serial.begin(9600);    
}

// Create a test called 'addition' in the test suite
test(addition) {
    assertEquals(3, 1 + 2);
}

void loop() {
    // Run test suite, printing results to the serial port
    suite.run();
}
60
ответ дан 23 November 2019 в 20:55
поделиться

Диомидис Спинеллис предлагает несколько советов в своей книге «Чтение кода: Открытый исходный код». Перспектива ", Addison Wesley, 2003. ISBN 0-201-79940-5.

6
ответ дан 23 November 2019 в 20:55
поделиться

В случае, если Вы интересуетесь выполнением эскиза INO и контроля последовательный вывод, у меня есть рабочая реализация этого в моем Ардуино проект контрольной суммы NMEA.

следующий сценарий берет файл и использует Ардуино CLI для компиляции его в ШЕСТНАДЦАТЕРИЧНЫЙ файл, который тогда загружается в SimAVR, который оценивает его и печатает последовательный вывод. Начиная со всех программ Ардуино, запущенных навсегда, действительно не имея опции уничтожения себя (exit(0) не работает), я позволяю эскизу, выполненному в течение нескольких секунд и затем разности полученный вывод с ожидаемым выводом.

Загрузка и извлечение Ардуино CLI (в этой версии 0.5.0 случая - последний во время записи):

curl -L https://github.com/arduino/arduino-cli/releases/download/0.5.0/arduino-cli_0.5.0_Linux_64bit.tar.gz -o arduino-cli.tar.gz
tar -xvzf arduino-cli.tar.gz

Теперь можно обновить индекс и установить соответствующее ядро:

./arduino-cli core update-index
./arduino-cli core install arduino:avr

Принятие Вашего эскиза называют nmea-checksum.ino, для получения ELF и ШЕСТНАДЦАТЕРИЧНОГО ЧИСЛА, выполняют:

./arduino-cli compile -b arduino:avr:uno nmea-checksum.ino

Следующий, SimAVR для выполнения ШЕСТНАДЦАТЕРИЧНОГО ЧИСЛА (или ELF) - я создаю из источника, потому что последний выпуск не работал на меня:

sudo apt-get update
sudo apt-get install -y build-essential libelf-dev avr-libc gcc-avr freeglut3-dev libncurses5-dev pkg-config
git clone https://github.com/buserror/simavr.git
cd simavr
make

Успешная компиляция даст Вам simavr/run_avr, который можно использовать для выполнения эскиза. Как я сказал, timeout это иначе это никогда не будет завершаться:

cd simavr
timeout 10 ./run_avr -m atmega168 -f 16000000 ../../nmea-checksum.ino.arduino.avr.uno.elf &> nmea-checksum.ino.clog || true

сгенерированный файл будет иметь управляющие символы цветового кода ANSI, обертывающие последовательный вывод, для избавлений от тех:

cat nmea-checksum.ino.clog | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" > nmea-checksum.ino.log
cat nmea-checksum.ino.log

Теперь все, что необходимо сделать, сравнено этот файл с известным хорошим файлом:

diff nmea-checksum.ino.log ../../nmea-checksum.ino.test

, Если нет никаких различий, diff, выйдет с кодом 0, иначе сценарий перестанет работать.

0
ответ дан 23 November 2019 в 20:55
поделиться

Проверьте версию, которую вы связываете во время компиляции (ссылка на файл), и версию, которая используется во время выполнения (сначала посмотрите в GAC, затем local)

Обычно версия в GAC отличается от версии, которую вы используете в качестве ссылки на файл. Пожалуйста, проверьте это.

Также очистите временный каталог ASP.NET и выполните перезапуск IIS (приглашение cmd -> iisreset)

Как только аппаратная абстракция была протестирована, я вскоре обнаружил, что, как правило, код переходит с тестового стенда на PIC и работает впервые.

Обновление:

Я использую шов #include для кода модуля, # включая код модуля в файле C ++ для тестовой установки и файл C. для целевого кода.

В качестве примера я хочу мультиплексировать четыре 7-сегментных дисплея, один порт управляет сегментами, а второй выбирает дисплей. Код дисплея взаимодействует с дисплеями через SetSegmentData (char) и SetDisplay (char) . Я могу смоделировать их на своем тестовом стенде C ++ и проверить, получаю ли я ожидаемые данные. Для цели я использую #define , так что я получаю прямое назначение без издержек на вызов функции

#define SetSegmentData(x) {PORTA = x;}
21
ответ дан 23 November 2019 в 20:55
поделиться

Это Кажется, что emulino отлично справится с этой задачей.

Emulino - это эмулятор платформы Arduino, созданный Грегом Хьюгиллом. ( Источник )

Репозиторий GitHub

15
ответ дан 23 November 2019 в 20:55
поделиться

HKEY _ CURRENT _ USER\Software\Classes\http\shell\open\command\( Default) - обработчик текущего пользователя для протокола HTTP (что означает "браузер по умолчанию"; ПРИМЕЧАНИЕ: это НЕ то же самое, что обработчик .html по умолчанию!).

Однако в верхней части меню "Пуск" можно использовать другой браузер без изменения значения по умолчанию. К вашему сведению, имя исполняемого файла браузера в меню "Пуск" хранится в HKEY _ CURRENT _ USER\Software\Clients\StartMireInternet\( Default) .

-121--3545641-

Ну, это зависит от того, что вы тестируете. Есть много способов справиться с подобными вещами. Я предпочитаю использовать Asterisk Call Files в комплекте с кодом dialplan. EG: Создайте файл вызова, чтобы набрать какой-то публичный номер, как только на него ответят, вернуться к указанному контексту dialplan и выполнить всю мою логику тестирования (воспроизведение звуковых файлов, прослушивание клавиатур и т.д.)

Я написал библиотеку файлов вызова Asterisk, которая делает этот вид тестирования ЧРЕЗВЫЧАЙНО простым. В нем также много документации/примеров, проверьте его здесь: http://pycall.org/ . Это может вам помочь.

Удачи!

-121--4998287-

simavr является симулятором AVR с использованием avr-gcc.

Он уже поддерживает несколько микроконтроллеров ATTiny и ATMega, и, по словам автора, легко добавить еще несколько.

В примерах лежит симдуино, эмулятор Arduino. Он поддерживает запуск загрузчика Arduino и может быть запрограммирован с помощью avrdude через Socat (модифицированный Netcat ).

11
ответ дан 23 November 2019 в 20:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: