
在C++中实践TDD(测试驱动开发),核心是“先写测试,再写实现,最后重构”。Catch2 是轻量、头文件即用、语法简洁的现代C++测试框架,非常适合TDD节奏。它不依赖构建系统,支持BDD风格(GIVEN-WHEN-THEN)和传统TEST_CASE,且天然支持C++11及以上特性。
一、快速接入 Catch2(无构建配置)
Catch2只需一个头文件。下载 catch2/catch_all.hpp 或直接通过 #include
- 新建 tests.cpp,开头加上 #define CATCH_CONFIG_MAIN(仅一处),之后包含 Catch2 头文件
- 编译命令示例:g++ -std=c++17 tests.cpp -o tests && ./tests
- 首次运行会自动发现并执行所有 TEST_CASE,输出绿色通过或红色失败详情
二、按TDD三步循环编写第一个测试
以实现一个简单的 is_even(int n) 函数为例:
- 红:先写失败测试——在 TEST_CASE("is_even returns true for 4") 中调用未定义函数,编译失败;补声明后运行,断言失败(因函数未实现)
- 绿:最小实现让测试通过——只写 return true;,测试变绿(不追求正确,只求过)
- 重构:增强健壮性——补充多个测试用例(0、-2、3、5),再把实现改为 return n % 2 == 0;,确保全部通过
三、写出可维护的TDD测试结构
避免测试代码重复,善用 Catch2 提供的机制:
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~