Это мой первый вопрос, задающий вопрос, поэтому, пожалуйста, дайте мне знать, если я смогу улучшить свой вопрос.Как вы интегрируете CMock/Unity с Automake?
Я ищу руководство по чистке модульных тестов, требующих замены исходных файлов с издеваемыми версиями исходного файла, созданного CMock. Это необходимо, потому что CMock требует, чтобы код модульного теста, используя макет, был связан с источником макета вместо исходного.
Например, если я тестирую функцию test_me(), которая вызывает Foo() в исходном файле теста, test.c, затем притворно Foo() я должен собрать test_test_me: test_me.c, Mockfoo.c, and test.c.
test_me() является обычно составляется как test_me: test_me.c and foo.c
Mockfoo.c сгенерирован с использованием Ruby-скрипта, предоставляемого CMock с использованием foo.h.
Как вы можете видеть, foo.c
необходимо заменить Mockfoo.c
, чтобы создать тестовую программу, test_test_me
. Mockfoo.c необходим, поэтому test_test_me может ссылаться на издеваемые вызовы foo, а не на исходный вызов foo. Замена источника затрудняется при увеличении числа зависимостей.
Например, если test_me использует foo, bar и baz из библиотеки libfoo.a, которая состоит из foo.o, bar.o и baz.o, и я хочу просто издеваться над вызовами foo, тогда Мне нужно создать libfoo.a с помощью блоков компиляции Mockfoo.o, bar.o и baz.o, чтобы затем связать мой test.o
, который использует ложные звонки foo. Это становится еще более сложным, когда у вас есть перестановки изделок (например, Mockfoo, Mockbar, но не baz) и большое исходное дерево с различными правилами, флагами и т. Д.
Кроме того, добавление mocks должно быть простым, поскольку mocks часто необходимы для наших модульных тестов.
Некоторый контекст:
Я заинтересован в использовании CMock/Unity добавить модульные тесты в тех случаях, когда код переработан или новый код добавляется в большой проект С, с которым я только что присоединился.
В настоящее время проект использует Automake как инструмент построения, и он должен оставаться.
Я новичок в Automake. Я знаком с SCons и CMock.
Согласен, используйте инструмент Ruby. Этот инструмент сборки на основе грабли называется Ceedling. У меня есть пошаговое руководство для начала работы с ним: http://www.electronvector.com/blog/try-embedded-test-driven-development-right-now-with-ceedling Нет причин, по которым вы не можете его использовать стороне Automake просто для запуска тестов. Отбросьте папку «vendor» из проекта Ceedling в свой проект и возьмите файл project.yml и rakefile.rb файлов. Затем измените конфигурацию источника и тестовой папки в папке project.yml в соответствии с вашим деревом проектов. – cherno