Додає тест до проекту, що буде виконуватись за допомогою команди ctest.
Сигнатура
add_test(NAME <name> COMMAND <command> [<arg>...] [CONFIGURATIONS <config>...] [WORKING_DIRECTORY <dir>] [COMMAND_EXPAND_LISTS])
Опис
Додає тест з ім'ям <name>. Назва тесту може містити довільні символи, вказана у якості аргументу обгорнутого у лапки або аргументу обгорнутого у дужки за необхідності. Деталі у політиці CMP0110.
Система CMake генерує тести у випадку виклику команди enable_testing(). Модуль CText викликає команду enable_testing() автоматично окрім випадків встановленого значення OFF для змінної BUILD_TESTING.
Тести додані за допомогою використання сигнатури add_test(NAME) підтримують генеруючі вирази у властивостях тесту встановлених за допомогою команд set_property(TEST) або set_tests_properties(). Властивості тестів можуть бути встановленими тільки у директорії у якій створений даний тест.
Параметри
COMMAND - вказує команду інтерпретатора для тесту. Якщо параметр
Команда може являти собою генеруючий вираз.
CONFIGURATIONS - обмежує виконуння тесту тільки для іменованих конфігурацій.
WORKING_DIRECTORY - встановлює властивість WORKING_DIRECTORY (робоча директорія) для тесту у якій буде виконуватись тест. Якщо не вказано, тест буде виконано у директорії шлях до якої вказує змінна CMAKE_CURRENT_BINARY_DIR. Робоча директорія може вказуватись використовуючи генеруючі вирази.
COMMAND_EXPAND_LISTS - Нововведення у версії 3.16.
Списки у аргументі COMMAND будуть розширені, включаючи ці що створені за допомогою використання генеруючих виразів.
Якщо команда тесту завершує своє виконання з кодом виходу 0 - вважається що тест пройшов. Не нульовий код виходу вважається проваленим тестом. Властивість тесту WILL_FAIL інвертує дану логіку. Однак помилки тесту на системному рівні на подобі помилок адресування або помилки купи будуть вважатись провалом навіть якщо змінна WILL_FAIL встановлена у значення true. Вивід команди у стандартний вивід або у вивід помилок захоплюється програмою ctest і вливають на успішність тесту за допомогою використання таких змінних тесту як: PASS_REGULAR_EXPRESSION, FAIL_REGULAR_EXPRESSION або SKIP_REGULAR_EXPRESSION.
Нововведення у версії 3.16: Додано властивість SKIP_REGULAR_EXPRESSION.
Приклад використання
add_test(NAME mytest COMMAND testDriver --config $<CONFIG> --exe $<TARGET_FILE:myexe>)
Дана команда створює тест mytest команда якого виконує утиліту testDriver, передаючи ім'я конфігурації і повний шлях до виконуваного файлу створеного ціллю myexe.
Рекомендується використання попереднього вказаної версії команди на відміну від старішої, менш гнучкої форми:
add_test(<name> <command> [<arg>...])
Що дадає тест <name> з наданою командою системного інтерпретатора.
На відміну від попередньої сигнатури з використанням NAME, імена цілей не підтримуються у даній формі команди. Більше того, тести додані за допомогою використання цієї спрощеної сигнатури не підтримують генеруючі вирази у команді системного інтерпретатора чи властивостях тесту.
Приклад використання у "природі"
Приклад використання команди add_test можна переглянути за адресою https://github.com/yuriysydor1991/kytok.org.ua-gtest-w-cmake-intro/blob/1.0.0/CMakeLists.txt#L47 у проекті-демонстрації використання фреймворку тестування GTest, який використовувався у статті за даресою GTest легкий старт разом з CMake і прикладами.