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_SIZECTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZECTEST_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_FILESATTACHED_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 测试属性代替可以在配置时确定的标签。