add_test¶
向项目中添加一个由 ctest(1) 运行的测试。
add_test(NAME <name> COMMAND <command> [<arg>...]
[CONFIGURATIONS <config>...]
[WORKING_DIRECTORY <dir>]
[COMMAND_EXPAND_LISTS])
添加一个名为 <name> 的测试。测试名称可以包含任意字符,必要时可表示为 带引号的参数 或 方括号参数。请参阅策略 CMP0110。
CMake 仅在调用 enable_testing() 命令后生成测试。CTest 模块会自动调用 enable_testing,除非 BUILD_TESTING 设置为 OFF。
使用 add_test(NAME) 签名添加的测试支持在通过 set_property(TEST) 或 set_tests_properties() 设置的测试属性中使用 生成器表达式。测试属性只能在创建测试的目录中设置。
add_test 选项有
COMMAND指定测试命令行。
如果
<command>指定了一个由add_executable()创建的可执行目标它将自动替换为构建时创建的可执行文件的位置。
版本 3.3 新增:如果设置了目标 的
CROSSCOMPILING_EMULATOR,它将用于在主机上运行命令<emulator> <command>
版本 3.29 新增:如果设置了目标 的
TEST_LAUNCHER,它将用于启动命令<launcher> <command>
如果
CROSSCOMPILING_EMULATOR也设置了,两者都使用<launcher> <emulator> <command>
命令可以使用
生成器表达式指定。CONFIGURATIONS限制测试仅在指定的配置中执行。
WORKING_DIRECTORY设置测试属性
WORKING_DIRECTORY,在其中执行测试。如果未指定,测试将在CMAKE_CURRENT_BINARY_DIR中运行。工作目录可以使用生成器表达式指定。COMMAND_EXPAND_LISTS3.16 版新增。
COMMAND参数中的列表将被展开,包括那些使用生成器表达式创建的列表。
如果测试命令以代码 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 签名不同,命令行中不支持目标名称。此外,使用此签名添加的测试不支持在命令行或测试属性中使用 生成器表达式。