如何对CTest进行分组管理以提升测试列表可读性
CTest分组实现方法
CTest通过测试的LABELS属性实现分组功能,你使用的CMake 3.20版本完全支持目录级批量标签配置,按以下操作即可实现需求的层级分组效果:
你可以选择两种方案按需使用:
- 方案1:子目录内逐个测试打标签
在unit子目录的CMakeLists.txt中,给每个测试单独设置LABELS属性即可:
# unit/CMakeLists.txt 示例内容 add_executable(ui_test user_interface_test.cpp) add_test(NAME UserInterface COMMAND ui_test) # 给测试设置Unit分组标签 set_tests_properties(UserInterface PROPERTIES LABELS "Unit") add_executable(test2 test2.cpp) add_test(NAME Test2 COMMAND test2) set_tests_properties(Test2 PROPERTIES LABELS "Unit")
- 方案2:批量给子目录所有测试打标签(推荐)
如果希望unit目录下后续新增的测试自动归到Unit分组,不需要逐个修改配置,可以直接在根目录CMakeLists中配置目录级默认标签,修改你的现有根目录CMakeLists.txt如下:
cmake_minimum_required(VERSION 3.20) project(Test) set(CMAKE_CXX_STANDARD 14) enable_testing() add_executable(env environment.cpp) add_test(Environment env) # 配置unit目录下所有测试默认携带Unit标签 set_property(DIRECTORY unit PROPERTY TEST_LABELS "Unit") add_subdirectory(unit)
配置完成后重新运行cmake生成构建系统,再运行ctest就会展示你期望的分组结构。如果需要单独运行某一组测试,执行ctest -L Unit即可筛选运行所有Unit分组的测试。
内容的提问来源于stack exchange,提问作者Reid Moffat
相关产品推荐
相关产品推荐

