Запись Makefile.am для вызова googletest модульных тестов

Я пытаюсь добавить свой первый модульный тест к существующему проекту С открытым исходным кодом. А именно, я добавил новый класс, названный 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

У кого-либо есть простой рецепт для меня, или это к загадочному, автоделают документацию для меня?:)

6
задан Josh Glover 17 March 2010 в 11:45
поделиться

2 ответа

Ответ Уильяма привел меня туда, куда нужно. Просто ради сообщества, вот что я в итоге сделал:

  1. Я переместил свои тесты обратно в структуру основной директории и добавил предлог test_, в соответствии с предложениями Уильяма.
  2. Я добавил несколько строк в 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
    
  3. Теперь, запуск "make check" запускает модульные тесты!

Все это можно посмотреть здесь: http://github.com/ksterker/adonthell/commit/aacdb0fe22f59e61ef0f5986827af180c56ae9f3

7
ответ дан 8 December 2019 в 12:58
поделиться

Если в существующем проекте уже есть структура тестирования, вам следует просто добавить:

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 уже существует, добавьте к этому назначению или используйте + =)

9
ответ дан 8 December 2019 в 12:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: