Непрерывная интеграция/тестирование модулей во встроенных системах С++
Какие инструменты обычно используются для модульного тестирования и особенно непрерывной интеграции для встроенных систем?
Я особенно думаю, что вам, как правило, приходится перекрестно компилировать и развертывать, а также что вы не можете легко визуализировать целевую платформу. Также может быть сложно запустить тестовый код и фреймворки.
Что я могу использовать, чтобы облегчить эти трудности?
(Я думаю, что это должен быть какой-то двойной таргетинг, где сервер сборки запускает свои тесты на более легкой цели)
Ответы
Ответ 1
Для модульного тестирования взгляните на Unity.
http://sourceforge.net/apps/trac/unity/wiki
Это действительно легкий тестовый жгут (2 x.h и 1 x.c файл), поддерживаемый скриптами Ruby. Мы использовали во встроенной целевой системе ARM7 для модульного тестирования (перенаправление тестовых отчетов по последовательному порту).
Он также поддерживается CMock для (сюрприз, сюрприз) Mocking. Несмотря на то, что они не слишком обширны, они очень легки в использовании.
Что касается CI, то Хадсон очень хорош, если вы используете Linux.
Также посмотрите на CppUTest и посмотрите книгу Джеймса Греннинга "TDD для встроенного C" на http://renaissancesoftware.net/
Ответ 2
На работе я использую фреймворк embUnit:
http://embunit.sourceforge.net/embunit/index.html
Хорошая вещь в этой структуре - это то, что она опережает. Он не требует каких-либо внешних библиотек (даже не libc). Вы можете легко подключить свою функцию вывода, так что если вы работаете в системе, где единственным подключением к внешнему миру является jtag или UART, тогда embUnit все равно будет работать.
Ответ 3
Я использовал RCUNIT и CANTATA ++ для модульного тестирования встроенного кода на ПК. Любой Nunit должен легко интегрироваться в любую непрерывную тестовую платформу. Нам было намного проще просто имитировать аппаратное обеспечение на ПК и тестировать только на цели во время окончательной интеграции.
Абстракция аппаратного интерфейса имеет решающее значение для модульного тестирования встроенного кода на ПК. Это хорошо работает с непрерывной интеграцией, поскольку он запускается на ПК с использованием только аппаратного доступа. С небольшим усилием мы смогли протестировать 95% кода на ПК для продолжения интеграции.
Вы также можете посмотреть на эти вопросы:
Ответ 4
Я видел блок C (pp), используемый в системе, который позволяет вам запускать цель через JTAG.
Помогает настроить консоль и т.д.
Но он может работать.
Ответ 5
Я работаю над открытым инструментом , который является либо минимальным тестом, либо может предоставить подробную информацию при прохождении отладчик.