如果我的项目有一堆测试,我可以运行它们-在cmake ing和make ing之后构建,构建-使用make test。但是如果我只想运行我的一个测试呢?也就是说,在测试CMakeFile.txt中有add_test()的项目之一?
cmake
make
make test
CMakeFile.txt
add_test()
zpf6vheq1#
tl;dr-执行以下操作:
cd $YOUR_BUILD_DIRECTORY ctest -R name_of_your_test
下面是你可能会感到困惑的原因:1.你尝试用make来做这件事,因为make test会为你运行所有的测试。这对单个测试不起作用(尽管有一个变通方法--参见@danger89的answer)。ctest是跨平台的方法。1.您开始使用ctest,例如在您的主项目目录中,您可能会得到如下内容:
ctest
********************************* No test configuration file found! ********************************* Usage ctest [options]
这没什么帮助。1....所以你想“好吧,也许ctest有一个-C开关,就像CMake和GNU Make一样”-事实上,它有一个-C开关!但这并没有达到你的预期:
-C
[joeuser:/home/joeuser/src/myproj]$ ctest -C build Test project /home/joeuser/src/myproj No tests were found!!!
您实际需要做的是:
(note -R匹配一个正则表达式。)这应该可以工作。注意,您可以 * 列出 * 要运行的测试,而不是通过将-N传递给ctest来实际运行它们。
-R
-N
ctest -R '^name_of_your_test$'
yc0p9oo02#
einpoklum并不完全正确,实际上如果你愿意,你可以使用make test。CMake会生成一个Makefile,我发现它接受一个ARGS变量。这意味着你可以通过-R(regex)参数来运行特定的测试。当使用make test时,它看起来像这样:
ARGS
make test ARGS="-R '^test_'"
这将只运行文件名以test_开头的测试用例文件。
test_
无论如何,上面的make测试示例将执行与运行完全相同的操作:
ctest -R '^test_'
2条答案
按热度按时间zpf6vheq1#
tl;dr-执行以下操作:
解释
下面是你可能会感到困惑的原因:
1.你尝试用
make
来做这件事,因为make test
会为你运行所有的测试。这对单个测试不起作用(尽管有一个变通方法--参见@danger89的answer)。ctest
是跨平台的方法。1.您开始使用
ctest
,例如在您的主项目目录中,您可能会得到如下内容:这没什么帮助。
1....所以你想“好吧,也许
ctest
有一个-C
开关,就像CMake和GNU Make一样”-事实上,它有一个-C
开关!但这并没有达到你的预期:您实际需要做的是:
(note
-R
匹配一个正则表达式。)这应该可以工作。注意,您可以 * 列出 * 要运行的测试,而不是通过将-N
传递给ctest
来实际运行它们。ctest -R '^name_of_your_test$'
-参数实际上是一个正则表达式。yc0p9oo02#
einpoklum并不完全正确,实际上如果你愿意,你可以使用
make test
。CMake会生成一个Makefile,我发现它接受一个ARGS
变量。这意味着你可以通过-R(regex)参数来运行特定的测试。当使用make test时,它看起来像这样:
这将只运行文件名以
test_
开头的测试用例文件。-R
上面只是一个示例,它将接受所有ctest
命令也将接受的参数。无论如何,上面的make测试示例将执行与运行完全相同的操作: