2016-07-16 5 views
1

В настоящее время я работаю над проектом, который использует autotools для создания make-файла. Как обычно, этот файл makefile поддерживает make check, чтобы запустить весь комплект тестов. Тем не менее, я работаю над небольшой частью программы, где применяются только несколько модульных тестов. Возможно ли, используя make check, выполнить единичный тест или выбор модульных тестов вместо всего пакета?Autotools: Как запустить одиночный тест с помощью make check?

Edit: Evan VanderZee suggests, что это зависит от структуры каталогов, поэтому позвольте мне объяснить немного больше о структуре каталогов. Структура каталогов для этого проекта довольно плоская. Большинство исходных файлов находятся в каталоге src/, некоторые из них сгруппированы в подкаталог под src/. Модульные тесты находятся в src/tests. Ни один из исходных каталогов не содержит Makefile. На верхнем уровне есть только make-файл (сгенерированный configure).

ответ

5

Если вы используете переменную TESTS Automake, чтобы список тестов, которые make check работает, то Существует простой ярлык: make check TESTS='name-of-test1 name-of-test2'TESTS переменная передается в командной строке переопределяет один в Makefile.

В качестве альтернативы, export TESTS='names-of-tests'; make -e check, чтобы принять значение TESTS от окружающей среды.

Если вы не используете TESTS, а вместо этого check-local или какую-либо другую цель, то это не сработает.

+0

Вот что я искал. Это позволяет мне выборочно проверять тесты, используя обычную процедуру. Благодаря! – palaga

1

Ответ на этот вопрос зависит от конкретных файлов make-файлов, которые вы используете. Если тесты имеют структуру каталогов, вы можете часто перейти в подкаталог и запустить make check в подкаталоге.

С тех пор как вы объяснили позже, что структура вашего каталога плоская, трудно сказать, не увидев какой-либо файл makefile. Если вы знаете имя исполняемого файла, созданного для конкретного теста, который вы хотите запустить, вы можете запустить make name_of_test для создания теста, который вы хотите запустить. Это не приведет к тестированию, оно только построит его. Тест может находиться в тестовом каталоге после его создания. После этого вы можете войти в тестовый каталог и запустить тест обычным способом запуска исполняемого файла, но если тест зависит от библиотек, вам может потребоваться указать тест, где найти эти библиотеки, возможно, добавив некоторые библиотеки в LD_LIBRARY_PATH.

Если это то, что вы хотели бы сделать часто, make-файл, вероятно, может быть изменен для поддержки запуска определенных тестов, которые вы хотите запустить. Обычно это связано с редактированием Makefile.am или Makefile.in, а затем переконфигурированием, но пока у меня недостаточно информации, чтобы сообщить, какие изменения вы должны будете внести.

+0

Выполнение 'make', даже без каких-либо аргументов, для создания модифицированных тестов. Как вы сказали, я могу запускать тесты, как обычные исполняемые файлы. Набор тестов занял некоторое время, чтобы бежать, что не весело, когда вас просто интересует несколько тестов. Это решение для меня достаточно. Благодаря! – palaga