4.9 运行测试子集
NOTE:此示例代码可以在 https://github.com/dev-cafe/cmake-cookbook/tree/v1.0/chapter-04/recipe-09 中找到。该示例在CMake 3.5版(或更高版本)中是有效的,并且已经在GNU/Linux、macOS和Windows上进行过测试。
前面的示例中,我们学习了如何在CMake的帮助下并行运行测试,并讨论了从最长的测试开始是最高效的。虽然,这种策略将总测试时间最小化,但是在特定特性的代码开发期间,或者在调试期间,我们可能不希望运行整个测试集。对于调试和代码开发,我们只需要能够运行选定的测试子集。在本示例中,我们将实现这一策略。
准备工作
在这个例子中,我们假设总共有六个测试:前三个测试比较短,名称分别为feature-a
、feature-b
和feature-c
,还有三个长测试,名称分别是feature-d
、benchmark-a
和benchmark-b
。这个示例中,我们可以用Python脚本表示这些测试,可以在其中调整休眠时间:
具体实施
以下是我们CMakeLists.txt文件内容的详细内容:
CMakeLists.txt
中,定义了六个测试:此外,我们给较短的测试贴上
quick
的标签,给较长的测试贴上long
的标签:我们现在可以运行测试集了,如下:
工作原理
现在每个测试都有一个名称和一个标签。CMake中所有的测试都是有编号的,所以它们也带有唯一编号。定义了测试标签之后,我们现在可以运行整个集合,或者根据它们的名称(使用正则表达式)、标签或编号运行测试。
按名称运行测试(运行所有具有名称匹配功能的测试):
按照标签运行测试(运行所有的长测试):
根据数量运行测试(运行测试2到4)产生的结果是:
更多信息
尝试使用$ ctest --help
,将看到有大量的选项可供用来定制测试。
Last updated