Spec-Zone.ru › CMake

add_test

Добавляет тест в проект для запуска с помощью ctest(1).

add_test(NAME <name> COMMAND <command> [<arg>...]
         [CONFIGURATIONS <config>...]
         [WORKING_DIRECTORY <dir>]
         [COMMAND_EXPAND_LISTS]
         [BUILD_DEPENDS <dependencies>...])

Добавляет тест с именем <name>. Имя теста может содержать произвольные символы; при необходимости укажите его как аргумент в кавычках или аргумент в скобках. См. политику CMP0110.

CMake генерирует тесты только в том случае, если была вызвана команда enable_testing(). Модуль CTest автоматически вызывает enable_testing, если только для BUILD_TESTING не задано значение OFF.

Тесты, добавленные с помощью сигнатуры add_test(NAME), поддерживают использование generator expressions в свойствах теста, заданных командами set_property(TEST) или set_tests_properties(). Свойства теста можно задавать только в том каталоге, где создан тест.

Доступны следующие параметры add_test:

COMMAND

Задает командную строку теста.

Если <command> указывает на исполняемый целевой объект, созданный командой add_executable():

  • При сборке он автоматически заменяется путем к созданному исполняемому файлу.
  • Добавлено в версии 3.3: Если задано свойство целевого объекта CROSSCOMPILING_EMULATOR, оно используется для запуска команды на хосте:

    <emulator> <command>
    

    Изменено в версии 3.29: Эмулятор используется только в том случае, если cross-compiling. См. политику CMP0158.

  • Добавлено в версии 3.29: Если задано свойство целевого объекта TEST_LAUNCHER, оно используется для запуска команды:

    <launcher> <command>
    

    Если также задано свойство CROSSCOMPILING_EMULATOR, используются оба свойства:

    <launcher> <emulator> <command>
    
  • Добавлено в версии 4.4: Если включена переменная CMAKE_TEST_BUILD_DEPENDS, генераторы Ninja создают вспомогательную цель сборки с именем test_prep/<name>, зависящую от целевого объекта исполняемого файла теста. Сборка этой цели гарантирует, что исполняемый файл будет актуальным перед запуском теста.

    Кроме того, целевые объекты, указанные в команде теста с помощью генераторных выражений, добавляются в качестве зависимостей цели test_prep/<name>.

    Если несколько тестов в разных каталогах имеют одинаковое имя, их зависимости объединяются в одну цель test_prep/<name>.

    Тесты с именами, не являющимися допустимыми именами целей, исключаются из этого механизма.

    Ключевое слово BUILD_DEPENDS позволяет добавлять явные зависимости сборки.

Команду можно задать с помощью generator expressions.

CONFIGURATIONS

Ограничивает выполнение теста указанными конфигурациями.

WORKING_DIRECTORY

Задает свойство теста WORKING_DIRECTORY, определяющее каталог выполнения теста. Если каталог не указан, тест запускается в CMAKE_CURRENT_BINARY_DIR. Рабочий каталог можно задать с помощью generator expressions.

BUILD_DEPENDS

Добавлено в версии 4.4.

Задает список целевых объектов или файлов, которые необходимо собрать перед запуском теста. Каждая зависимость добавляется в описанную выше цель сборки test_prep/<name>, если переменная CMAKE_TEST_BUILD_DEPENDS включена для генераторов Ninja. Чтобы указать зависимости сборки с помощью этого ключевого слова, имя теста должно быть допустимым именем цели.

COMMAND_EXPAND_LISTS

Добавлено в версии 3.16.

Списки в аргументах COMMAND будут развернуты, включая списки, созданные с помощью generator expressions.

Тест считается пройденным, если команда теста завершается с кодом 0. Ненулевой код завершения означает, что тест «не пройден». Свойство теста WILL_FAIL инвертирует эту логику. Обратите внимание, что системные сбои теста, такие как ошибки сегментации или ошибки кучи, всё равно приведут к провалу теста, даже если WILL_FAIL имеет значение true. Вывод в stdout или stderr перехватывается ctest(1) и влияет на результат теста только посредством свойств теста 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, имена целевых объектов в командной строке не поддерживаются. Кроме того, тесты, добавленные с этой сигнатурой, не поддерживают generator expressions в командной строке или свойствах теста, а свойства целевого объекта TEST_LAUNCHER и CROSSCOMPILING_EMULATOR не поддерживаются.

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/command/add_test.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API