5

Я поддерживаю пакет autoconf и хочу интегрировать автоматическое тестирование. Я использую Boost Unit Test Framework для своих модульных тестов и смог успешно интегрировать его в пакет.automake: автоматически запускает модульные тесты

То есть он может быть скомпилирован с помощью make check, но он не запущен (хотя я читал, что make check компилирует и запускает тесты). В результате я должен запустить его вручную после создания тестов, которые громоздки.

Makefile.am в папке тест выглядит следующим образом:

check_PROGRAMS = prog_test 
prog_test_SOURCES = test_main.cpp ../src/class1.cpp class1_test.cpp class2.cpp ../src/class2_test.cpp ../src/class3.cpp ../src/class4.cpp 
prog_test_LDADD = $(BOOST_FILESYSTEM_LIB) $(BOOST_SYSTEM_LIB) $(BOOST_UNIT_TEST_FRAMEWORK_LIB) 

Makefile.am в корневой папке:

SUBDIRS = src test 
dist_doc_DATA = README 
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS} -I m4 

Запуск test/prog дает выход:

Running 4 test cases... 

*** No errors detected 

(я дона» t думаю, что вам нужно содержимое моих тестовых случаев, чтобы t o ответьте на мой вопрос, поэтому я их пропустил пока)

Как я могу сделать automake запускать мои тесты каждый раз, когда я запускаю make check?

ответ

8

По меньшей мере один из способов сделать это включает в себя настройку переменной TESTS. Вот что documentation on automake говорит об этом:

Если специальная переменная ИСПЫТАНИЯ определяется, его значение берется список программ или сценариев для запуска, чтобы сделать тестирование.

Итак, добавив строку

TESTS = $(check_PROGRAMS) 

должен поручить ему проводить тесты на make check.

+3

От https://www.gnu.org/software/automake/manual/html_node/Scripts_002dbased-Testsuites.html#index-TESTS: «Программы, перечисленные в check_PROGRAMS (и check_LIBRARIES, check_LTLIBRARIES ...), создаются только во время make check, а не во время make all. Вы должны указать там какую-либо программу, необходимую вашим тестам, которые не нужно создавать, сделав все. Обратите внимание, что check_PROGRAMS автоматически не добавляются к TESTS, потому что check_PROGRAMS обычно перечисляет программы, используемые тестами, а не сами тесты. Конечно, вы можете установить TESTS = $ (check_PROGRAMS), если все ваши программы являются тестовыми примерами ». –

+0

В какой файл следует добавить строку? Id не работал для 'test/Makefile.am' и' Makefile.am'. Имеет ли значение положение? – Paddre

+0

@Paddre, позиция на самом деле не имеет значения, добавьте строку в 'test/Makefile.am', root makefile вызовет ее. Удостоверьтесь, что 'Makefile.in' и' Makefile' были восстановлены после изменений, простым способом может быть запуск 'make distclean'. – xaizek

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