ctest_测试¶
作为 仪表板客户端 执行 CTest 测试步骤。
ctest_test([BUILD <build-dir>] [APPEND]
[START <start-number>]
[END <end-number>]
[STRIDE <stride-number>]
[EXCLUDE <exclude-regex>]
[INCLUDE <include-regex>]
[EXCLUDE_LABEL <label-exclude-regex>]
[INCLUDE_LABEL <label-include-regex>]
[EXCLUDE_FIXTURE <regex>]
[EXCLUDE_FIXTURE_SETUP <regex>]
[EXCLUDE_FIXTURE_CLEANUP <regex>]
[PARALLEL_LEVEL <level>]
[RESOURCE_SPEC_FILE <file>]
[TEST_LOAD <threshold>]
[SCHEDULE_RANDOM <ON|OFF>]
[STOP_ON_FAILURE]
[STOP_TIME <time-of-day>]
[RETURN_VALUE <result-var>]
[CAPTURE_CMAKE_ERROR <result-var>]
[REPEAT <mode>:<n>]
[OUTPUT_JUNIT <file>]
[QUIET]
)
在项目构建树中运行测试并将结果存储在 Test.xml 中,以便使用 ctest_submit() 命令提交。
选项是:
构建<构建目录>指定顶级构建目录。如果未给出,则使用 CTEST_BINARY_DIRECTORY 变量。
追加标记
Test.xml以追加到自上次 ctest_start 调用以来提交到仪表板服务器的结果。追加语义由正在使用的仪表板服务器定义。这 不会 导致将结果附加到先前调用此命令生成的.xml文件中。开始<起始编号>指定测试编号范围的开始。
END <end-number>指定测试编号范围的结尾。
STRIDE <步幅>指定跨越一系列测试数字的步幅。
排除 <exclude-regex>指定要排除的正则表达式匹配测试名称。
包括 <include-regex>指定要包含的正则表达式匹配测试名称。不匹配此表达式的测试将被排除。
EXCLUDE_LABEL <label-exclude-regex>指定要排除的正则表达式匹配测试标签。
INCLUDE_LABEL <label-include-regex>指定要包含的正则表达式匹配测试标签。不匹配此表达式的测试将被排除。
EXCLUDE_FIXTURE <regex>在 3.7 版本加入.
如果要执行的测试集中的一个测试需要特定的夹具,则该夹具的设置和清理测试通常会自动添加到测试集中。此选项可防止为匹配
<regex>的装置添加设置或清理测试。请注意,保留所有其他夹具行为,包括测试依赖项和跳过具有失败的夹具设置测试的测试。EXCLUDE_FIXTURE_SETUP <regex>在 3.7 版本加入.
与 EXCLUDE_FIXTURE 相同,除了只排除匹配的设置测试。
EXCLUDE_FIXTURE_CLEANUP <regex>在 3.7 版本加入.
与 EXCLUDE_FIXTURE 相同,除了只排除匹配的清理测试。
PARALLEL_LEVEL <level>指定一个正数,表示要并行运行的测试数。
RESOURCE_SPEC_FILE <文件>在 3.16 版本加入.
指定 资源规范文件。有关详细信息,请参阅:ref:ctest-resource-allocation。
TEST_LOAD <阈值>在 3.4 版本加入.
并行运行测试时,尽量不要在可能导致 CPU 负载超过给定阈值时开始测试。如果未指定
CTEST_TEST_LOAD变量将被检查,然后:option:--test-load <ctest --test-load> 命令行参数到:manual:ctest(1) .另请参阅 CTest 测试步骤中的TestLoad设置。重复<模式>:<n>在 3.17 版本加入.
根据给定的``<mode>`` 重复运行测试最多``<n>`` 次。这些模式是:
UNTIL_FAIL要求每个测试运行
<n>次而不失败才能通过。这对于查找测试用例中的零星故障很有用。UNTIL_PASS允许每个测试运行最多
<n>次才能通过。如果由于任何原因失败,则重复测试。这对于容忍测试用例中的零星故障很有用。超时后允许每个测试运行最多
<n>次才能通过。仅在超时时重复测试。这对于容忍繁忙机器上测试用例中的零星超时很有用。
SCHEDULE_RANDOM <ON|OFF>以随机顺序启动测试。这对于检测隐式测试依赖性可能很有用。
STOP_ON_FAILURE在 3.18 版本加入.
一旦测试失败,停止执行测试。
STOP_TIME <一天中的时间>指定测试应停止运行的一天中的某个时间。
RETURN_VALUE <result-var>如果所有测试都通过,则存储在“<result-var>”变量“0”中。如果出现任何问题,则存储非零值。
CAPTURE_CMAKE_ERROR <result-var>在 3.7 版本加入.
如果运行命令有任何错误,则将 -1 存储在“<result-var>”变量中,并防止 ctest 在发生错误时返回非零值。
OUTPUT_JUNIT <文件>在 3.21 版本加入.
以 JUnit XML 格式将测试结果写入``<file>``。如果
<file>是相对路径,它将被放置在构建目录中。如果<file>已经存在,它将被覆盖。请注意,生成的 JUnit XML 文件**没有**上传到 CDash,因为它与 CTest 的Test.xml文件是多余的。安静在 3.3 版本加入.
抑制任何本应打印到控制台的特定于 CTest 的非错误消息。底层测试命令的输出不受影响。详细说明通过测试百分比的摘要信息也不受 QUIET 选项的影响。
另请参阅 CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE、 CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE 和 CTEST_CUSTOM_TEST_OUTPUT_TRUNCATION 变量,以及它们相应的 ctest(1) 命令行选项:option:` --测试输出-size-passed <ctest --test-output-size-passed>`, --test-output-size-failed, 和 :option:` --test-output-truncation <ctest --test-output-truncation>`。
额外的测试测量¶
CTest 可以解析您的测试输出以获得额外的测量报告给 CDash。
当作为 仪表板客户端 运行时,CTest 将在上传到 CDash 的 Test.xml 文件中包含这些自定义测量。
查看`CDash 测试测量文档 <https://github.com/Kitware/CDash/blob/master/docs/test_measurements.md>`_ 了解有关 CDash 识别的测试测量类型的更多信息。
以下示例演示如何输出各种自定义测试测量值。
std::cout <<
"<CTestMeasurement type=\"numeric/double\" name=\"score\">28.3</CTestMeasurement>"
<< std::endl;
std::cout <<
"<CTestMeasurement type=\"text/string\" name=\"color\">red</CTestMeasurement>"
<< std::endl;
std::cout <<
"<CTestMeasurement type=\"text/link\" name=\"CMake URL\">https://cmake.org</CTestMeasurement>"
<< std::endl;
std::cout <<
"<CTestMeasurement type=\"text/preformatted\" name=\"Console Output\">" <<
"line 1.\n" <<
" \033[31;1m line 2. Bold red, and indented!\033[0;0ml\n" <<
"line 3. Not bold or indented...\n" <<
"</CTestMeasurement>" << std::endl;
图像测量¶
以下示例演示如何将测试图像上传到 CDash。
std::cout <<
"<CTestMeasurementFile type=\"image/jpg\" name=\"TestImage\">" <<
"/dir/to/test_img.jpg</CTestMeasurementFile>" << std::endl;
std::cout <<
"<CTestMeasurementFile type=\"image/gif\" name=\"ValidImage\">" <<
"/dir/to/valid_img.gif</CTestMeasurementFile>" << std::endl;
std::cout <<
"<CTestMeasurementFile type=\"image/png\" name=\"AlgoResult\">" <<
"/dir/to/img.png</CTestMeasurementFile>"
<< std::endl;
如果提供了以下两个或更多名称,图像将在 CDash 上以交互式比较模式一起显示。
测试图像有效图像基线图像DifferenceImage2
按照惯例,TestImage 是您的测试生成的图像,ValidImage``(或``BaselineImage)是用于确定测试是否通过的比较基础。
如果使用另一个图像名称,CDash 会将其显示为与交互式比较 UI 分开的静态图像。
附加的文件¶
在 3.21 版本加入.
以下示例演示如何将非图像文件上传到 CDash。
std::cout <<
"<CTestMeasurementFile type=\"file\" name=\"TestInputData1\">" <<
"/dir/to/data1.csv</CTestMeasurementFile>\n" <<
"<CTestMeasurementFile type=\"file\" name=\"TestInputData2\">" <<
"/dir/to/data2.csv</CTestMeasurementFile>" << std::endl;
如果要上传的文件的名称在配置时已知,则可以改用 ATTACHED_FILES 或 ATTACHED_FILES_ON_FAIL 测试属性。
定制细节¶
在 3.21 版本加入.
以下示例演示如何为 CDash 上显示的“测试详细信息”字段指定自定义值。
std::cout <<
"<CTestDetails>My Custom Details Value</CTestDetails>" << std::endl;
附加标签¶
在 3.22 版本加入.
以下示例演示了如何在运行时向测试添加附加标签。
std::cout <<
"<CTestLabel>Custom Label 1</CTestLabel>\n" <<
"<CTestLabel>Custom Label 2</CTestLabel>" << std::endl;
使用 LABELS 测试属性代替可以在配置时确定的标签。