添加测试

向要由 ctest(1) 运行的项目添加测试。

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

添加一个名为 <name> 的测试。测试名称可以包含任意字符,如有必要,表示为 引用的参数括号参数。请参阅政策:policy:CMP0110。选项是:

命令

指定测试命令行。如果 <command> 指定了一个可执行目标(由 add_executable() 创建),它将自动替换为在构建时创建的可执行文件的位置。

该命令可以使用 generator expressions 指定。

配置

将测试的执行限制在指定的配置上。

工作目录

设置 WORKING_DIRECTORY 测试属性以指定执行测试的工作目录。如果未指定,则测试将在当前工作目录设置为与当前源目录对应的构建目录的情况下运行。

工作目录可以使用 generator expressions 指定。

COMMAND_EXPAND_LISTS

在 3.16 版本加入.

COMMAND 参数中的列表将被扩展,包括使用 generator expressions 创建的列表。

如果设置了 WILL_FAIL 测试属性,给定的测试命令预计会以代码“0”退出,非零表示失败,反之亦然。任何写入 stdout 或 stderr 的输出都将被 ctest(1) 捕获,但不会影响通过/失败状态,除非:prop_test:PASS_REGULAR_EXPRESSIONFAIL_REGULAR_EXPRESSION 或 :prop_test:`SKIP_REGULAR_EXPRESSION ` 使用测试属性。

在 3.16 版本加入: 添加了 SKIP_REGULAR_EXPRESSION 属性。

使用 add_test(NAME) 签名支持添加的测试使用 generator expressions 在由 set_property(TEST) 或 :command 设置的测试属性中: set_tests_properties

用法示例:

add_test(NAME mytest
         COMMAND testDriver --config $<CONFIG>
                            --exe $<TARGET_FILE:myexe>)

这将创建一个测试“mytest”,其命令运行一个“testDriver”工具,传递配置名称和目标“myexe”生成的可执行文件的完整路径。

备注

仅当调用 enable_testing 命令时,CMake 才会生成测试。 CTest 模块会自动调用命令,除非``BUILD_TESTING`` 选项被关闭。


此命令还支持更简单但不太灵活的签名:

add_test(<name> <command> [<arg>...])

使用给定的命令行添加名为 <name> 的测试。

与上面的 NAME 签名不同,命令行不支持目标名称。此外,使用此签名添加的测试不支持命令行或测试属性中的 generator expressions