简单测试配置下CTest无法找到测试的问题该如何解决?
解决方案
核心原因
你的问题由以下几个常见配置/操作错误导致,按优先级排查即可:
- 未开启
BUILD_TESTS编译选项
你顶层CMakeLists.txt中将BUILD_TESTS默认值设为OFF,如果运行CMake配置时没有主动开启该选项,启用测试、添加tests子目录的逻辑完全不会执行,自然不会注册任何测试用例。 - 运行ctest的工作目录错误
ctest默认会读取当前工作目录下的CTest配置文件,如果你在源码根目录直接运行ctest,即使build目录下有正确的配置也会识别失败。 - 非核心冗余配置
tests子目录下的enable_testing()属于重复调用,不需要额外添加,只要顶层CMake开启BUILD_TESTS时调用的enable_testing()就足够生效。
操作步骤
按以下顺序执行即可修复问题:
- 清空原有构建目录,避免旧缓存干扰:
rm -rf build
- 带测试选项重新执行CMake配置:
cmake -S . -B build -DBUILD_TESTS=ON
- 执行编译构建:
cmake --build build
- 进入构建目录后运行ctest:
cd build ctest -C Debug
执行完成后就能看到my_test测试正常运行的输出。
内容的提问来源于stack exchange,提问作者Symlink
相关产品推荐
相关产品推荐

