Я думаю, что разработчики встраиваемых систем и микропрограмм больше всего нарушают юнит-тесты, потому что «железо сложное».

Я написал простую среду модульного тестирования под названием nanotest, которая работает на микроконтроллерах, поскольку все остальные среды запускают такие вещи, как fork()/malloc()/signal() для безопасности тестирования. Nanotest предназначен для запуска встроенных тестов с набором инструкций ARMv7-M (также может выполнять x64), работающим в режиме эмуляции через QEMU (при условии отсутствия использования аппаратных периферийных устройств, читай: модульный) или на реальном микроконтроллере.

Например, подход QEMU может запускать модульные тесты непрерывной интеграции в облаке (например, Travis-CI или Gitlab CI) и находить поломки еще до того, как они будут перенесены на реальное оборудование.

Будущие инструменты ARM greentea (также известные как Универсальная среда регрессии для автоматизации тестирования), которые кажутся еще более мощными при интеграции с скоро выпущенной ОС mbed.

Мне пришлось поделиться этим, потому что меня тошнит от того, что люди не умеют выполнять модульное тестирование встроенного ПО. Сделайте свой код модульным, отделив аппаратные интерфейсы от внутренних интерфейсов, и найдите работающую тестовую среду. Никаких оправданий.