我正在使用gtest为我的应用程序编写单元测试。我也有 ctest 运行add_test CMake 命令添加的所有可执行文件。测试执行开始时,是否可以通过 ctest 传递 gtest 变量?
例如,我想有时使用 --gtest_filter 标志过滤掉测试,但我不知道如何或是否可以通过 ctest 做到这一点?我尝试了以下方法:
ctest --gtest_filter=AppTest.*
ctest --test-arguments="--gtest_filter=AppTest.*"
但两者都仍然运行所有测试,而不是过滤后的测试。
谢谢!
对于任何在2019年看到这里的人来说,最新版本的CMake都有gtest_discover_tests
(GoogleTest模块),它将把你的测试提升到CTest中,你可以从那里过滤。
IOW 不是在 CTest 中只有一个add_test
,而是使用 --gtest_list_tests
为每个测试调用add_test
。
例如,要使测试的输出详细:
$ make test ARGS="-V"
运行特定测试:
$ ctest -R <regex>
注意:你可以看看这个例子。
看看CMakes的add_test
add_test。
要从 CTest 中过滤掉测试,您可以使用 -L ctest