Запуск юнит-тестов от Atmel Studio 6

В настоящее время я занимаюсь разработкой встроенного проекта C ++ в Atmel Studio 6. Этот проект имеет довольно значительную встроенную часть, а также значительную часть бизнес-логики. В идеале я хотел бы запустить некоторое модульное тестирование для кода бизнес-логики. Возможность удобного построения и запуска этих тестов повысит вероятность использования модульных тестов.

Если я пытаюсь скомпилировать с помощью модульных тестов Boost с помощью компилятора avr-gcc по умолчанию, я получаю ошибки, поскольку не удается найти различные заголовочные файлы. Я понимаю, что эти заголовки не реализованы для набора микросхем AVR, который я использую, поскольку в этом контексте они будут слишком дорогими. Однако эти заголовки используются только для модульного тестирования не встроенной части и, следовательно, были помещены в их собственный специальный проект модульных тестов.

Нужно ли мне устанавливать другой компилятор для компиляции модульных тестов? Можно ли скомпилировать модульные тесты с помощью другой цепочки инструментов компилятора, установленной по умолчанию avr-gcc, или мне придется компилировать модульные тесты где-нибудь еще? Есть ли более простой способ сделать это?

6

Решение

Когда я создаю встроенное программное обеспечение, я иногда пишу модульные тесты по (аппаратно-независимой) бизнес-логике и запускаю их на своей архитектуре хоста x86.

Я обычно строю Eclipse CDT (или же Qt Creator) проецировать по тому же дереву исходного кода, получая доступ к папке, где у вас есть логика C ++, и компилируя ее вместе со структурой модульного тестирования и тестовыми примерами с НКУ, нацеливание на архитектуру x86. Затмение или же Qt Creator будет обрабатывать Makefiles для меня. Ты можешь использовать Увеличение или любую другую систему модульного тестирования здесь; Обычно мне нужно всего лишь 50 строк кода, которые я предоставляю сам, с несколькими функциями assert (например, вы можете использовать те же модульные тесты в окончательной архитектуре AVR, например).

Я обычно предоставляю муравей задачи по созданию встроенного программного обеспечения для AVR, а также по созданию и прохождению модульных тестов для x86, поэтому я могу легко интегрировать его с панелью непрерывной интеграции.

Удачи!.

4

Другие решения

В кроссплатформенных проектах обычно используется несколько наборов инструментов. Проблемы при сборке на одной из платформ означают, что код не был правильно перенесен на одну из платформ (я уверен, что вы уже знали эту часть).

Обычно вы добавляете во время компиляции переключатели и переписываете проблемный код. Например, любые ссылки на библиотеку boost (в коде для Win) вызовут проблемы во встроенной цели. Таким образом, вы должны удалить их, используя время компиляции, зависящее от машины, переключатели. Возможно, вам придется переписать некоторые модули из-за этого, но с другой стороны, поэтому вы не используете сторонние библиотеки библиотек, которые не были перенесены в нужную вам архитектуру (например, boost) в кросс-платформенном коде.

Поскольку здесь мы говорим о модульных тестах, вам, возможно, удастся просто распечатать некоторые выходные данные в файлах при работе на платформе, а сценарий / программа на базе Windows проанализирует их для интерпретации результатов — эта стратегия применяется для 90% модульные тесты на встроенных платформах (это также решает проблему реального времени, которая возникает в большинстве встроенных проектов).

1

По вопросам рекламы [email protected]