add_test — CMake 4.0.1 Documentation (original) (raw)
Add a test to the project to be run by ctest(1).
add_test(NAME COMMAND [...] [CONFIGURATIONS ...] [WORKING_DIRECTORY ] [COMMAND_EXPAND_LISTS])
Adds a test called <name>
. The test name may contain arbitrary characters, expressed as a Quoted Argument or Bracket Argumentif necessary. See policy CMP0110.
CMake only generates tests if the enable_testing() command has been invoked. The CTest module invokes enable_testing
automatically unless BUILD_TESTING is set to OFF
.
Tests added with the add_test(NAME)
signature support usinggenerator expressionsin test properties set by set_property(TEST) orset_tests_properties(). Test properties may only be set in the directory the test is created in.
add_test
options are:
COMMAND
Specify the test command-line.
If <command>
specifies an executable target created byadd_executable():
- It will automatically be replaced by the location of the executable created at build time.
- Added in version 3.29: The target's TEST_LAUNCHER, if set, will be used to launch the command:
If the CROSSCOMPILING_EMULATOR is also set, both are used:
The command may be specified usinggenerator expressions.
CONFIGURATIONS
Restrict execution of the test only to the named configurations.
WORKING_DIRECTORY
Set the test property WORKING_DIRECTORY in which to execute the test. If not specified, the test will be run inCMAKE_CURRENT_BINARY_DIR. The working directory may be specified using generator expressions.
COMMAND_EXPAND_LISTS
Added in version 3.16.
Lists in COMMAND
arguments will be expanded, including those created withgenerator expressions.
If the test command exits with code 0
the test passes. Non-zero exit code is a "failed" test. The test property WILL_FAIL inverts this logic. Note that system-level test failures such as segmentation faults or heap errors will still fail the test even if WILL_FAIL
is true. Output written to stdout or stderr is captured by ctest(1) and only affects the pass/fail status via the PASS_REGULAR_EXPRESSION,FAIL_REGULAR_EXPRESSION, or SKIP_REGULAR_EXPRESSIONtest properties.
Example usage:
add_test(NAME mytest COMMAND testDriver --config $ --exe $<TARGET_FILE:myexe>)
This creates a test mytest
whose command runs a testDriver
tool passing the configuration name and the full path to the executable file produced by target myexe
.
The command syntax above is recommended over the older, less flexible form:
add_test( [...])
Add a test called <name>
with the given command-line.
Unlike the above NAME
signature, target names are not supported in the command-line. Furthermore, tests added with this signature do not support generator expressionsin the command-line or test properties.