使用Catch2编写C++单元测试时遇env可执行文件找不到问题
解决CLion中CMake Catch2测试报错“Unable to find executable: env”的问题
你遇到的报错源于add_test命令里直接调用了env程序——Windows环境下不存在该命令,且这种设置环境变量的方式不符合CMake跨平台规范。
修复步骤
替换原有测试注册代码,改用CMake原生的环境变量设置方式:
# 替换原有的Register Tests部分 add_test(NAME tests COMMAND ./tests) set_tests_properties(tests PROPERTIES ENVIRONMENT "CTEST_OUTPUT_ON_FAILURE=1" )
原理说明
add_test(NAME tests COMMAND ./tests)直接指定测试可执行文件,彻底避免对外部env命令的依赖set_tests_properties通过ENVIRONMENT参数为测试进程设置环境变量,该方式完美兼容Windows、Linux和macOS平台CTEST_OUTPUT_ON_FAILURE=1仍会正常生效,测试失败时Catch2会自动输出详细报错信息
修改后重新生成CMake项目并运行测试,即可解决找不到env的问题。
内容的提问来源于stack exchange,提问作者blip
相关产品推荐
相关产品推荐

