Модульное тестирование и guacamole-server
Модульные тесты в guacamome-server реализованы с использованием следующих инструментов:
Makefile.am
и использует make check
для запуска этих тестов;util/generate-test-runner.pl
, скрипт на языке Perl, который генерирует тестовый раннер на языке C, использующий CUnit, и запускает модульные тесты, объявленные в каждом из указанных файлов .c
. Сгенерированный тестовый раннер выдаёт вывод в формате TAP (https://testanything.org/), который используется тестовым драйвером TAP, предоставляемым automake.Написание модульных тестов
Все модульные тесты должны быть в достаточно изолированных исходных файлах на языке C. Каждый логический тест должен иметь свою функцию вида:
void test_SUITENAME__TESTNAME() {
...
}
где TESTNAME
— произвольное имя теста, а SUITENAME
— произвольное название набора тестов, к которому принадлежит этот тест.
Это соглашение об именах требуется для generate-test-runner.pl
. Абсолютно все тесты ДОЛЖНЫ следовать этому соглашению, чтобы они были подобраны и организованы скриптом генерации тестового раннера. Функции, которые не являются тестами, НЕ ДОЛЖНЫ соответствовать этому соглашению, чтобы их случайно не подобрали как тесты.
Makefile.am
для подпроекта, содержащего такие тесты, обычно модифицируется, чтобы содержать разделы, подобные следующим:
#
# Модульные тесты для myproj
#
check_PROGRAMS = test_myproj
TESTS = $(check_PROGRAMS)
test_myproj_SOURCES = \
...все исходные файлы...
test_myproj_CFLAGS = \
-Werror -Wall -pedantic \
...другие флаги...
test_myproj_LDADD = \
...библиотеки...
#
# Автогенерация тестового раннера
#
GEN_RUNNER = $(top_srcdir)/util/generate-test-runner.pl
CLEANFILES = _generated_runner.c
_generated_runner.c: $(test_myproj_SOURCES)
$(AM_V_GEN) $(GEN_RUNNER) $(test_myproj_SOURCES) > $@
nodist_test_libguac_SOURCES = \
_generated_runner.c
# Использование тестового драйвера automake для запуска любых тестов
LOG_DRIVER = \
env AM_TAP_AWK='$(AWK)' \
$(SHELL) $(top_srcdir)/build-aux/tap-driver.sh
Вышеуказанное объявляет ...
test_myproj
должен быть собран из указанных источников. Обратите внимание, что test_myproj_SOURCES
содержит только исходный код, написанный вручную, в то время как nodist_test_myproj_SOURCES
содержит только код, сгенерированный generate-test-runner.pl
.test_myproj
следует запускать для тестирования этого проекта при запуске make check
, и что для обработки его вывода следует использовать тестовый драйвер TAP от automake._generated_runner.c
генерируется динамически (через запуск generate-test-runner.pl
на всех не сгенерированных источниках тестов) и не должен распространяться как часть исходного архива.При наличии тестов, соответствующих вышеуказанному соглашению об именах, и внесении необходимых изменений в соответствующий Makefile.am
, все тесты будут автоматически запускаться при запуске make check
.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )