1. 为什么需要CMake和CTest构建测试框架
第一次用C++写单元测试时,我直接把测试代码和业务逻辑混在一起编译。结果同事review代码时直接崩溃了——他要在几百行业务代码里找那几十行测试逻辑。这种经历让我明白,测试代码必须与生产代码物理隔离。而CMake+CTest的组合,就是解决这个问题的银弹。
传统C++测试的痛点太明显了:要么得手动写main函数调用各个测试用例,要么依赖第三方框架(比如Google Test)带来额外的依赖管理成本。而CTest作为CMake原生测试工具,最大的优势就是零额外依赖——你的开发环境只要有CMake就能跑测试。去年给某工业设备做嵌入式开发时,目标板连网络都没有,正是靠CTest在离线环境下完成了所有模块的自动化测试。
更妙的是,CTest与CMake的深度集成让测试变成构建流程的自然延伸。想象这样的场景:当你修改某个类实现后,只需一条make test命令,构建系统会自动完成编译链接、执行测试、生成报告的全流程。我在金融行业的一个高频交易项目中,正是靠这种自动化测试机制,在每次代码提交前快速验证核心算法模块的正确性。
2. 五分钟搭建基础测试框架
2.1 项目结构规划
先看一个典型的带测试的C++项目结构:
project/
├── CMakeLists.txt # 根配置
├── src/
│ ├── calculator.cpp # 生产代码
│ └── calculator.h
└── tests/
├── CMakeLists.txt # 测试配置
└── test_calc.cpp # 测试代码
关键点在于物理隔离:生产代码放src目录,测试代码放tests目录。这种结构在Clion、VS Code等现代IDE中都能获得很好的支持。我习惯在tests目录下再按模块建立子目录,比如tests/unit、tests/integration,但小型项目保持



被折叠的 条评论
为什么被折叠?



