Запуск юнит-тестов от Atmel Studio 6
В настоящее время я занимаюсь разработкой встроенного проекта C++ в Atmel Studio 6. Этот проект имеет довольно значительную встроенную часть, а также значительную часть бизнес-логики. В идеале я хотел бы запустить некоторое модульное тестирование для кода бизнес-логики. Возможность удобного построения и запуска этих тестов повышает вероятность использования модульных тестов.
Если я пытаюсь скомпилировать с помощью модульных тестов Boost с помощью компилятора avr-gcc по умолчанию, я получаю ошибки, поскольку не удается найти различные заголовочные файлы. Я понимаю, что эти заголовки не реализованы для используемого мной набора микросхем AVR, так как в этом контексте они будут слишком дорогими. Однако эти заголовки используются только для модульного тестирования не встроенной части и, следовательно, были помещены в их собственный специальный проект модульных тестов.
Нужно ли мне устанавливать другой компилятор для компиляции модульных тестов? Можно ли скомпилировать модульные тесты с помощью другой цепочки инструментов компилятора, установленной по умолчанию avr-gcc, или мне придется компилировать модульные тесты в другом месте? Есть ли более простой способ сделать это?
2 ответа
Когда я создаю встроенное программное обеспечение, я иногда пишу модульные тесты по (аппаратно-независимой) бизнес-логике и запускаю их на своей архитектуре хоста x86.
Обычно я создаю проект Eclipse CDT (или Qt Creator) поверх того же дерева исходных текстов, получая доступ к папке, где у вас есть логика C++, и компилируя ее вместе со структурой модульного тестирования и тестовыми примерами с помощью gcc, ориентируясь на архитектуру x86. Eclipse или Qt Creator будут обрабатывать Makefiles для меня. Вы можете использовать Boost или любую другую платформу для юнит-тестирования здесь; Обычно мне требуется всего 50 строк кода, которые я предоставляю сам, с несколькими функциями assert (например, вы можете использовать те же модульные тесты в окончательной архитектуре AVR, например).
Обычно я поставляю задачи ant для сборки встроенного программного обеспечения для AVR, а также для сборки и прохождения модульных тестов для x86, поэтому я могу легко интегрировать его с панелью непрерывной интеграции.
Удачи!.
В кроссплатформенных проектах обычно используется несколько наборов инструментов. Проблемы при сборке на одной из платформ означают, что код не был правильно перенесен на одну из платформ (я уверен, что вы уже знали эту часть).
Обычно вы добавляете во время компиляции переключатели и переписываете проблемный код. Например, любые ссылки на библиотеку boost (в коде для Win) вызовут проблемы во встроенной цели. Таким образом, вы должны удалить их, используя время компиляции, зависящее от машины, переключатели. Возможно, вам придется переписать некоторые модули из-за этого, но с другой стороны, именно поэтому вы не используете сторонние библиотеки библиотек, которые не были перенесены в нужную вам архитектуру (например, boost) в кросс-платформенном коде.
Поскольку здесь мы говорим о модульных тестах, вам, возможно, удастся просто распечатать некоторые выходные данные в файлах при работе на платформе, а сценарий / программа на базе Windows проанализирует их для интерпретации результатов - эта стратегия применяется для 90% модульные тесты на встроенных платформах (это также решает проблему реального времени, которая возникает в большинстве встроенных проектов).