2017-01-23 10 views
2

У меня есть управляемый проект Eclipse, который использует GNU ARM Embedded Toolchain для компиляции для ST-микроконтроллера ST. Теперь я хочу, чтобы блок тестировал код в этом проекте. Основой, которую я хочу использовать для модульного тестирования, является Google Test.Как добавить модульные тесты в Eclipse для управляемого проекта ARM C?

Я попытался создать второй проект Eclipse для модульных тестов, в котором используется стандартная инструментальная цепочка GNU. Как это:

Project1 (ARM)
| --- ЦСИ

Проект2 (Desktop)
| --- тест

Проблема в том, двояка:

  1. Второй проект не имеет доступа к исходному коду первого проекта (очевидно). Поэтому я попытался создать статическую библиотеку из первого проекта для целей тестирования, что приводит к второй проблеме.
  2. Библиотека, созданная из первого проекта, несовместима со вторым проектом, так как использует встроенную инструментальную цепочку GNU ARM вместо стандартной инструментальной цепочки GNU.

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

Еще один путь, по которому я пошел, заключался в том, чтобы модульные тесты в том же проекте, что и фактический код, и использовали конфигурацию сборки для создания исполняемого файла для модульного тестирования. Что-то вроде этого:

Проект
| --- ЦСИ
| --- тест

Это не работает, как хорошо, и это вид кажется, что это та же проблема, как и в первом подходе так или иначе.

Проблема не в самодиагностике. Я знаю, как использовать Google Test для тестирования обычных проектов C в eclipse.

Как модульное тестирование встроенного проекта обычно подстраивается под управляемые проекты в eclipse? Это вообще возможно? Если да, то это хороший способ сделать это, или я должен написать свой собственный make-файл для сопровождения этой задачи?

ответ

2

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

  • Project1, должны быть построены как статическая библиотека для обеих платформ. Он будет содержать ваше приложение независимо от платформы.
  • Project2 должен быть создан только для настольных компьютеров, он будет иметь тесты и основные тесты, также будет связан с библиотекой Project1.
  • Необходимо создать Project3 (с основным и зависимым от платформы кодом) и создать эльф или bin, связанный с библиотекой Project1 для целевой платформы.

Это может усложниться, если вы решите также запустить тесты на целевой платформе;

У меня есть два примеры/шаблоны, где вы можете получить на основе, но они не связаны с затмение:

  1. Построить с Makefiles с MSP430, CppUTest набора инструментов в качестве испытательной базы. https://github.com/felipe-lavratti/UnitTestingEmbeddedC-Demo1

  2. С помощью Scons тесты выполняются на обеих платформах, зависимостях и CppUTest в качестве модульной системы тестирования. https://github.com/felipe-lavratti/UnitTestYoutubeVideos

 Смежные вопросы

  • Нет связанных вопросов^_^