CMake/CTest-定义的测试XYZ在哪里



在用许多测试构建了CMake/CTest设置之后,我看到了一个日益严重的问题。如果ctest -R test_some_side_corner_item_XYZ失败,我如何系统地追踪到有人添加测试test_some_side_corner_item_XYZ的地方?

我知道有一个问题,我们可以在add_test()上添加宏,这让我们更难做出任何明确的答案,但仍然如此。

cmake似乎没有任何明显的方法来实现这一点,ctest也是如此。

您可以使用ctest命令行选项在进行add_test()调用的CMakeLists.txt层次结构中查找精确的行。我们可以使用--show-only=json-v1选项来显示关于测试的JSON格式的元数据:

ctest -R test_some_side_corner_item_XYZ --show-only=json-v1

这个打印的例子是:

{
"backtraceGraph" :
{
"commands" :
[
"add_test"
],
"files" :
[
"C:/workspace/myproject/CMakeLists.txt"
],
"nodes" :
[
{
"file" : 0
},
{
"command" : 0,
"file" : 0,
"line" : 34,
"parent" : 0
}
]
},
...

这列出了为该测试调用add_test()CMakeLists.txt文件,以及调用它的行号("line" : 34(。


从CMake文档中,--show-only选项实际上不会运行测试,但只会显示其信息:

-N,--show-only[=<format>]

禁用测试的实际执行。

此选项告诉CTest列出将要运行但未实际运行的测试。与-R-E选项结合使用非常有用。

注意,-R选项是一个正则表达式,用于匹配您想要的测试,因此要获得精确的匹配,您可以用^$:锚定测试名称

ctest -R ^test_some_side_corner_item_XYZ$ --show-only=json-v1

相关内容

  • 没有找到相关文章

最新更新