Catch2 是一个专为现代 C++(C++14/17/20+)设计的开源测试框架,它让编写单元测试、TDD(测试驱动开发)和 BDD(行为驱动开发)变得像写普通 C++ 代码一样自然直观。它不依赖任何第三方库,单头文件即可集成,彻底告别复杂的构建配置和冗长的样板代码——尤其适合追求开发效率与代码可维护性的 C++ 工程师。
核心功能
- 零依赖单头文件部署:仅需一个
catch2/catch.hpp(或现代模块化catch2/catch_all.hpp)即可开始测试,无需编译依赖、无需安装包管理器,直接 #include 就能跑 - 原生支持多种测试范式:统一支持经典单元测试(TEST_CASE)、TDD 风格(SECTION 嵌套断言)、BDD 风格(GIVEN-WHEN-THEN 宏),一套框架覆盖全场景
- 智能断言与自动诊断:使用
REQUIRE和CHECK等语义化断言,失败时自动打印表达式值、变量上下文与调用栈,大幅缩短调试时间 - 灵活的测试组织与筛选:支持标签系统(如
[integration][slow])、通配符匹配、命令行参数过滤(--tags="[!hide]"),轻松管理大型测试套件 - 内置轻量级基准测试:通过
BENCHMARK宏即可对函数片段进行微基准测试,支持统计分析(均值、标准差),无需额外引入 benchmark 库 - 跨平台 & 持续集成友好:全面支持 Windows(MSVC/MinGW)、Linux(GCC/Clang)、macOS,并已深度集成 GitHub Actions、AppVeyor 等主流 CI 系统,覆盖率报告开箱即得
适合哪些人用
如果你是以下角色,Catch2 极可能成为你日常开发中不可或缺的“测试搭档”:
✅ 使用 C++14 及以上标准的开发者(包括游戏引擎、嵌入式中间件、金融系统、图形库等高性能领域工程师);
✅ 希望快速落地 TDD/BDD 实践、又不愿被繁重框架束缚的团队技术骨干;
✅ 学习现代 C++ 的学生或自学者,需要一个低门槛、高反馈、文档友好的测试入门工具;
✅ 维护遗留 C++ 项目的架构师——Catch2 向后兼容 v2.x(支持 C++11)甚至 Catch1.x(C++03),平滑演进无压力。
快速上手
只需三步,5 分钟内跑起第一个测试:
- 获取头文件:访问 GitHub Releases 页面 下载最新版
catch2.hpp,或使用 Conan、vcpkg、CPM.cmake 等现代包管理器一键集成 - 编写测试文件(例如
tests.cpp):#define CATCH_CONFIG_MAIN #include "catch2/catch.hpp" TEST_CASE("加法运算正确性", "[math]") { REQUIRE(2 + 2 == 4); CHECK(1 + 1 == 2); // 即使失败也不终止执行 } - 编译运行:用任意支持 C++14 的编译器(如 g++-10 或 clang++-12)编译并执行:
g++ -std=c++17 tests.cpp -o tests && ./tests,立即看到彩色测试报告
项目信息
catchorg/Catch2
GitHub
A modern, C++-native, test framework for unit-tests, TDD and BDD – using C++14, C++17 and later (C++11 support is in v2.x branch, and C++03 on the Cat
20.6k
今日 +69 stars today
Stars
3.4k
Forks
C++
BSL-1.0
编程语言:C++|Star 数:20598|开源协议:BSL-1.0(Boost Software License)|GitHub 项目地址
它不是最重的框架,却是最懂 C++ 开发者直觉的测试伙伴——用原生语法写测试,用极简方式管测试,用稳定表现信测试。


