首次使用CTest(CMake)项目遇‘未找到测试’错误求解决
先完成构建再运行CTest
确保在执行CTest前,已经完成了CMake配置和项目构建。在Visual Studio中先点击「生成」整个项目,保证tester可执行文件被正确编译;如果用命令行,先执行cmake --build .完成构建,再运行ctest。检查
enable_testing()的有效性enable_testing()必须放在所有add_test()调用之前,且不能被条件语句(如if())包裹导致未执行。如果项目有子目录,该命令需放在根CMakeLists.txt中,或在包含测试的子目录CMakeLists.txt内(需被add_subdirectory()引入)。修正
add_test()的参数
多配置环境(如Visual Studio的Debug/Release)下,直接用目标名可能存在路径问题,建议改用生成器表达式指定可执行文件路径:add_test(NAME Tester COMMAND $<TARGET_FILE:tester>)确保
add_test的目标名和add_executable定义的tester完全一致。验证
tester.cpp的测试逻辑
确保测试文件包含可被CTest识别的逻辑,至少保证可执行文件能返回正确退出码(0为通过,非0为失败)。示例基础测试代码:#include <cstdlib> int main() { int result = 1 + 1; return (result == 2) ? EXIT_SUCCESS : EXIT_FAILURE; }查看CTest详细日志定位问题
运行CTest时添加-v参数(ctest -v),或在Visual Studio中右键RUN_TESTS目标选择「生成」,查看输出窗口的详细日志,确认是否存在可执行文件找不到、测试执行报错等具体问题。清理CMake缓存重新配置
在Visual Studio中右键项目选择「删除CMake缓存」,然后重新加载配置并构建项目,避免缓存导致的配置异常。
内容的提问来源于stack exchange,提问作者Michel Keijzers

