ctest_test
Выполнить шаг теста CTest в качестве клиента панели мониторинга.
ctest_test([BUILD <build-dir>] [APPEND]
[START <start-number>]
[END <end-number>]
[STRIDE <stride-number>]
[EXCLUDE <exclude-regex>]
[INCLUDE <include-regex>]
[EXCLUDE_LABEL <label-exclude-regex>]
[INCLUDE_LABEL <label-include-regex>]
[EXCLUDE_FIXTURE <regex>]
[EXCLUDE_FIXTURE_SETUP <regex>]
[EXCLUDE_FIXTURE_CLEANUP <regex>]
[PARALLEL_LEVEL <level>]
[RESOURCE_SPEC_FILE <file>]
[TEST_LOAD <threshold>]
[SCHEDULE_RANDOM <ON|OFF>]
[STOP_ON_FAILURE]
[STOP_TIME <time-of-day>]
[RETURN_VALUE <result-var>]
[CAPTURE_CMAKE_ERROR <result-var>]
[REPEAT <mode>:<n>]
[OUTPUT_JUNIT <file>]
[QUIET]
)
Запустить тесты в дереве сборки проекта и сохранить результаты в Test.xml для отправки с помощью команды ctest_submit().
Доступные параметры:
-
BUILD <build-dir> -
Указать директорию сборки верхнего уровня. Если не указано, используется переменная
CTEST_BINARY_DIRECTORY. -
APPEND -
Отметить
Test.xmlдля добавления к результатам, ранее отправленным на сервер панели мониторинга с момента последнего вызоваctest_start(). Семантика добавления определяется используемым сервером панели мониторинга. Это не приведет к добавлению результатов к файлу.xmlсозданному предыдущим вызовом этой команды. -
START <start-number> -
Указать начало диапазона номеров тестов.
-
END <end-number> -
Указать конец диапазона номеров тестов.
-
STRIDE <stride-number> -
Указать шаг для перемещения по диапазону номеров тестов.
-
EXCLUDE <exclude-regex> -
Указать регулярное выражение для исключения тестов по имени.
-
INCLUDE <include-regex> -
Указать регулярное выражение для включения тестов по имени. Тесты, не соответствующие этому выражению, будут исключены.
-
EXCLUDE_LABEL <label-exclude-regex> -
Указать регулярное выражение для исключения тестов по меткам.
-
INCLUDE_LABEL <label-include-regex> -
Указать регулярное выражение для включения тестов по меткам. Тесты, не соответствующие этому выражению, будут исключены.
-
EXCLUDE_FIXTURE <regex> -
Новая версия 3.7.
Если тест в наборе выполняемых тестов требует определённого фикстура, тесты настройки и очистки этого фикстура обычно автоматически добавляются в набор тестов. Этот параметр предотвращает добавление тестов настройки или очистки для фикстур, соответствующих
<regex>. Обратите внимание, что всё другое поведение фикстуры сохраняется, включая зависимости тестов и пропуск тестов, у которых тесты настройки фикстуры завершаются неудачей. -
EXCLUDE_FIXTURE_SETUP <regex> -
Новая версия 3.7.
То же, что и
EXCLUDE_FIXTURE, за исключением того, что исключаются только соответствующие тесты настройки. -
EXCLUDE_FIXTURE_CLEANUP <regex> -
Новая версия 3.7.
То же, что и
EXCLUDE_FIXTURE, за исключением того, что исключаются только соответствующие тесты очистки. -
PARALLEL_LEVEL <level> -
Указать положительное число, представляющее количество тестов, которые будут выполняться параллельно.
-
RESOURCE_SPEC_FILE <file> -
Новая версия 3.16.
Указать файл спецификации ресурсов. См. Распределение ресурсов для получения дополнительной информации.
-
TEST_LOAD <threshold> -
Новая версия 3.4.
При одновременном выполнении тестов старайтесь не запускать тесты, которые могут привести к превышению заданного порога загрузки процессора. Если не указано, будет проверена переменная
CTEST_TEST_LOAD, а затем аргумент командной строки--test-loadкctest(1). См. также настройкуTestLoadв шаге теста CTest. -
REPEAT <mode>:<n> -
Новая версия 3.17.
Повторять тесты в соответствии с заданным
<mode>до<n>раз. Режимы:-
UNTIL_FAIL -
Требуется, чтобы каждый тест выполнялся
<n>раз без сбоев, чтобы пройти. Это полезно для выявления спорадических ошибок в тестовых сценариях. -
UNTIL_PASS -
Разрешить каждому тесту выполняться до
<n>раз, чтобы пройти. Повторяет тесты, если они завершаются неудачей по любой причине. Это полезно для переносимости спорадических сбоев в тестовых сценариях. -
AFTER_TIMEOUT -
Разрешить каждому тесту выполняться до
<n>раз, чтобы пройти. Повторяет тесты только если они завершаются по таймауту. Это полезно для переносимости спорадических таймаутов в тестовых сценариях на загруженных машинах.
-
-
SCHEDULE_RANDOM <ON|OFF> -
Запустить тесты в случайном порядке. Это может быть полезно для выявления неявных зависимостей между тестами.
-
STOP_ON_FAILURE -
Новая версия 3.18.
Остановить выполнение тестов, как только один из них завершится ошибкой.
-
STOP_TIME <time-of-day> -
Указать время, по которому тесты должны остановиться.
-
RETURN_VALUE <result-var> -
Сохранить в переменной
<result-var>значение0, если все тесты прошли успешно. Сохранить ненулевое значение, если что-то пошло не так. -
CAPTURE_CMAKE_ERROR <result-var> -
Новая версия 3.7.
Сохранить в переменной
<result-var>значение -1, если при выполнении команды возникли ошибки, и предотвратить возвращение ненулевого значения ctest в случае возникновения ошибки. -
OUTPUT_JUNIT <file> -
Новая версия 3.21.
Записать результаты тестов в
<file>в формате JUnit XML. Если<file>– относительный путь, он будет размещён в каталоге сборки. Если<file>уже существует, он будет перезаписан. Обратите внимание, что полученный XML-файл JUnit не загружается в CDash, потому что он избыточен по отношению к файлуTest.xmlCTest. -
QUIET -
Новая версия 3.3.
Запретить вывод любых CTest-специфических сообщений, отличных от сообщений об ошибках, которые в противном случае выводились бы в консоль. Вывод от подчинённой команды теста не затрагивается. Сводная информация, отображающая процент прохождения тестов, также не затрагивается параметром
QUIET.
См. также переменные CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE и CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.
Дополнительные измерения тестов
CTest может анализировать вывод ваших тестов, чтобы сообщить дополнительные измерения в CDash.
При запуске в качестве клиента панели мониторинга, CTest включит эти пользовательские измерения в файл Test.xml , который загружается в CDash.
См. документацию CDash по измерениям тестов для получения дополнительной информации о типах измерений тестов, распознаваемых CDash.
Следующий пример демонстрирует, как выводить различные пользовательские измерения тестов.
std::cout << "<CTestMeasurement type=\"numeric/double\" name=\"score\">28.3</CTestMeasurement>" << std::endl; std::cout << "<CTestMeasurement type=\"text/string\" name=\"color\">red</CTestMeasurement>" << std::endl; std::cout << "<CTestMeasurement type=\"text/link\" name=\"CMake URL\">https://cmake.org</CTestMeasurement>" << std::endl; std::cout << "<CTestMeasurement type=\"text/preformatted\" name=\"Console Output\">" << "line 1.\n" << " \033[31;1m line 2. Bold red, and indented!\033[0;0ml\n" << "line 3. Not bold or indented...\n" << "</CTestMeasurement>" << std::endl;
Измерения изображений
Следующий пример демонстрирует, как загружать изображения тестов в CDash.
std::cout << "<CTestMeasurementFile type=\"image/jpg\" name=\"TestImage\">" << "/dir/to/test_img.jpg</CTestMeasurementFile>" << std::endl; std::cout << "<CTestMeasurementFile type=\"image/gif\" name=\"ValidImage\">" << "/dir/to/valid_img.gif</CTestMeasurementFile>" << std::endl; std::cout << "<CTestMeasurementFile type=\"image/png\" name=\"AlgoResult\"> << "/dir/to/img.png</CTestMeasurementFile>" << std::endl;
Изображения будут отображаться вместе в интерактивном режиме сравнения в CDash, если они предоставлены с двумя или более из следующих имен.
TestImageValidImageBaselineImageDifferenceImage2
По соглашению, TestImage – это изображение, созданное вашим тестом, а ValidImage (или BaselineImage ) – это основа сравнения, используемая для определения прохождения или неудачи теста.
Если используется другое имя изображения, CDash отобразит его как статическое изображение отдельно от интерактивного интерфейса сравнения.
Прикрепленные файлы
Новая версия 3.21.
Следующий пример демонстрирует, как загружать файлы, не являющиеся изображениями, в CDash.
std::cout << "<CTestMeasurementFile type=\"file\" name=\"TestInputData1\">" << "/dir/to/data1.csv</CTestMeasurementFile>\n" << "<CTestMeasurementFile type=\"file\" name=\"TestInputData2\">" << "/dir/to/data2.csv</CTestMeasurementFile>" << std::endl;
Если имя загружаемого файла известно на этапе настройки, вы можете использовать свойства теста ATTACHED_FILES или ATTACHED_FILES_ON_FAIL вместо этого.
Пользовательские детали
Новая версия 3.21.
Следующий пример демонстрирует, как указать пользовательское значение для поля Test Details, отображаемого в CDash.
std::cout << "<CTestDetails>My Custom Details Value</CTestDetails>" << std::endl;
Дополнительные метки
Новая версия 3.22.
Следующий пример демонстрирует, как добавить дополнительные метки к тесту во время выполнения.
std::cout << "<CTestLabel>Custom Label 1</CTestLabel>\n" << "<CTestLabel>Custom Label 2</CTestLabel>" << std::endl;
Для меток, которые можно определить на этапе настройки, используйте свойство теста LABELS.
© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.23/command/ctest_test.html