CTest - 使用标签进行不同的测试CTestTestfile.cmake

use*_*162 8 cmake ctest

我找不到如何指定标签.应该是这样的

ADD_TEST( FirstTest RunSomeProgram "withArguments" )
SET_TESTS_PROPERTIES( FirstTest PROPERTIES LABEL "TESTLABEL" )
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何设置其中一个标签,我可以使用

ctest -S someScript -L TESTLABEL
Run Code Online (Sandbox Code Playgroud)

Fra*_*ser 14

你很接近 - 测试属性被命名LABELS,而不是LABEL.

有几种设置标签的方法; 你选择的(使用set_tests_properties)有一个轻微的陷阱.签名是:

set_tests_properties(test1 [test2...] PROPERTIES prop1 value1 prop2 value2)
Run Code Online (Sandbox Code Playgroud)

这意味着每个属性只能应用一个值.因此,如果您想以这种方式将多个标签应用于测试,则需要通过将标签列表作为包含以分号分隔的列表的单个字符串来"欺骗"CMake:

set_tests_properties(FirstTest PROPERTIES LABELS "TESTLABEL;UnitTest;FooModule")
Run Code Online (Sandbox Code Playgroud)

要么

set(Labels TESTLABEL UnitTest FooModule)
set_tests_properties(FirstTest PROPERTIES LABELS "${Labels}")  # Quotes essential
Run Code Online (Sandbox Code Playgroud)


另一方面,您可以使用更通用的set_property命令传递正确的标签列表:

set_property(TEST FirstTest PROPERTY LABELS TESTLABEL UnitTest FooModule)
Run Code Online (Sandbox Code Playgroud)

要么

set_property(TEST FirstTest PROPERTY LABELS ${Labels})  # No quotes needed
Run Code Online (Sandbox Code Playgroud)

此命令的轻微缺点是您每次调用只能应用一个属性.