Я пытаюсь добавить свой первый модульный тест к существующему проекту С открытым исходным кодом. А именно, я добавил новый класс, названный audio_manager:
src/audio/audio_manager.h
src/audio/audio_manager.cc
Я создал src/test структуру каталогов, которая зеркально отражает структуру файлов реализации и записала мои googletest модульные тесты:
src/test/audio/audio_manager.cc
Теперь, я пытаюсь настроить свой Makefile.am, чтобы скомпилировать и выполнить модульный тест:
src/test/audio/Makefile.am
Я скопировал Makefile.am с:
src/audio/Makefile.am
У кого-либо есть простой рецепт для меня, или это к загадочному, автоделают документацию для меня?:)
Ответ Уильяма привел меня туда, куда нужно. Просто ради сообщества, вот что я в итоге сделал:
Я добавил несколько строк в src/audio/Makefile.am, чтобы включить модульные тесты:
# Unit tests
noinst_PROGRAMS = test_audio_manager
test_audio_manager_SOURCES = $(libadonthell_audio_la_SOURCES) test_audio_manager.cc
test_audio_manager_CXXFLAGS = $(libadonthell_audio_la_CXXFLAGS)
test_audio_manager_LDADD = $(libadonthell_audio_la_LIBADD) -lgtest
TESTS = test_audio_manager
Теперь, запуск "make check" запускает модульные тесты!
Все это можно посмотреть здесь: http://github.com/ksterker/adonthell/commit/aacdb0fe22f59e61ef0f5986827af180c56ae9f3
Если в существующем проекте уже есть структура тестирования, вам следует просто добавить:
TESTS += audio_manager
в существующие тесты / Makefile.am. Если в существующем проекте нет тестовой структуры, вам следует бежать в горы.
Если бегство в гору неприемлемо, придется потрудиться, чтобы создать тестовую структуру, но она не является непреодолимой. Вы можете предпочесть сделать тесты родственниками src, но в этом нет необходимости. Вероятно, проще начать со свежего Makefile.am, чем копировать Makefile.am из src, но, возможно, и нет. Возможно, все, что вам нужно сделать, это изменить строки вида: с
bin_PROGRAMS = ...
на
check_PROGRAMS = ...
добавить строку
TESTS = test-audio-manager
изменить имя audio_manager.cc на test-audio-manager.cc (это не обязательно, но поможет ремонтопригодность.Я изменил _ на - чисто из личных предпочтений) и добавил
SUBDIRS = tests/audio
в src / Makefile.am. (Если директива SUBDIRS уже существует, добавьте к этому назначению или используйте + =)