【发布时间】:2015-09-23 23:26:11
【问题描述】:
我正在使用 CTest 和 CMake 来运行一些测试。我使用enable_testing() 命令,它为我提供了make test 的默认命令。我的子目录中的所有测试都被计算在内(通过执行add_test 命令)并且make test 效果很好,除了一个问题。
有一个测试,我命名为skip_test,当我执行make test 时,我不想运行它。我想添加一个自定义目标,这样我就可以运行 make skip_test 并运行该测试。
我可以通过执行add_custom_target(skip_test ...) 并为CTest 提供-R 标志并告诉它查找名称中包含“skip_test”的文件来做到这一点。这似乎也有效。我现在的问题是:如何让make test 命令忽略skip_test?
如果我尝试注释掉 enable_testing 并添加我自己的 add_custom_target(test ....),我会收到“未找到测试!!!”现在是make test 或make skip_test。我还尝试制作自定义 CTest 文件并添加 set(CTEST_CUSTOM_TESTS_IGNORE skip_test)。这很有效,所以现在 make test 忽略了“skip_test”,但现在运行 make skip_test 会响应“没有找到测试!!!”。
任何建议将不胜感激!
【问题讨论】:
-
我发现在CMake生成的Makefile中,定义了目标“make test”。它运行 ctest 并在末尾有一个额外的 $(ARGS) 标志。我发现我的问题的“解决方案”是手动输入“-E .*skip_test”,它会跳过我名为“skip_test”的测试。如何告诉 CMake 将此附加到自动定义的“make test”目标?
标签: unit-testing cmake googletest ctest