Первое, что вы должны понять, это то, что прежде всего Ceedling или любая инфраструктура модульного тестирования предназначена для тестирования вашего кода и расширения вашего конечного проекта. Обычно вы тестируете свой код на своем P C, используя какой-то стандартизированный компилятор, не обязательно ваш кросс-компилятор для вашей встроенной системы. Вы можете запускать сгенерированные тесты для цели, но, вероятно, не хотите.
Лучшей книгой по этому предмету (не идеальной, но все же чертовски хорошей) является Джеймс У. Разработка Grenning для разработки встраиваемых приложений для встраиваемых систем C (Pragmati c Programmers).
У меня есть личный GIST при настройке под более старым Windows здесь . В основном я обращаю внимание на то, что Ruby и G CC на windows.
Под Linux Ceedling очень прост в настройке и запуске.
- подтвердите, что у вас есть g cc доступно
- подтвердите, что у вас есть ruby с драгоценным камнем
- драгоценный камень при установке ceedling
- ceedling
Вот и все. Если вы адаптируетесь к новому проекту, вам нужно будет покопаться в файле project.yml, чтобы сообщить ceedling, где находятся ваши исходные файлы и включаемые файлы, и где вы хотите, чтобы ваши тестовые файлы имели значение go. Это может быть сложной задачей для некоторых структур проекта, но если ничего не помогает, вы просто помещаете когда-либо папку по имени в свой файл project.yml (не самый лучший, но в конечном итоге запасной вариант для сумасшедших испорченных проектов). Существуют другие вещи, связанные с обучением, такие как ceedling test_xxx. c файлы являются своего рода магией c в том смысле, что они содержат ваши тесты, но также действуют как контрольный файл компоновщика. Предполагается, что каждый включаемый файл в файле test_xxx. c имеет соответствующую единицу перевода (файл. c) с тем же базовым именем. Ceedling найдет его и скомпилирует в ваш тест. Если вы хотите исключить этот код, но нуждаетесь в некоторых зависимостях, измените имя включаемого файла, включив в него слово mock, чтобы автоматически смоделировать интерфейс, чтобы foo.h стал mock_foo.h и создавал фиктивные функции для всех объявленных функций, найденных в заголовок. Если у вас нет пары имен header / tranalation_unit, вы можете сказать ceedling скомпилировать и связать файл, поместив его имя в макрос с именем TEST_FILE. Так что если у вас нет foo.h, но вам нужен foo. c:
TEST_FILE("foo.c")
На странице Throw The Switch есть множество других замечательных ресурсов. Надеюсь, это поможет. Мне никогда не приходилось извлекать инструмент непосредственно из github, но если вы хотите отправить им исправления, я полагаю, что это другой способ, но они вложили так много усилий, чтобы сделать его более простым в настройке и начать использовать, я бы начал с * Сначала метод 1047 *.
Примечание: в плагине module_generator теперь есть несколько классных хуков для юнит-тестирования, которые автоматически генерируют заглушки для тестирования, что может быть очень полезно во время целевых тестов.