TGViewer
GitHub开源观察|开源项目·热门仓库·开发者 GitHub开源观察|开源项目·热门仓库·开发者 @githubtrendinghub · 570 subscribers
Post #350 23
Catch2 v3:现代化的C++测试框架

Catch2 是一个原生 C++ 测试框架,支持单元测试、TDD 和 BDD,并可做微基准测试。其核心优势在于使用简单自然:测试名不必是合法标识符,断言像普通 C++ 布尔表达式,section 机制能优雅共享 setup/teardown 代码。

v3 版本带来重大变化,Catch2 不再是一个单头文件库,转而成为包含多个头文件和单独编译实现的常规库。迁移指南和文档正在逐步更新。

示例:单元测试
```cpp
#include <catch2/catch_test_macros.hpp>
#include <cstdint>
uint32_t factorial(uint32_t number) {
return number <= 1 ? number : factorial(number-1) * number;
}
TEST_CASE("Factorials are computed", "[factorial]") {
REQUIRE(factorial(1) == 1);
REQUIRE(factorial(2) == 2);
REQUIRE(factorial(3) == 6);
REQUIRE(factorial(10) == 3'628'800);
}
```

示例:微基准测试(默认不运行,需加 [!benchmark] 标签)
```cpp
#include <catch2/catch_test_macros.hpp>
#include <catch2/benchmark/catch_benchmark.hpp>
uint64_t fibonacci(uint64_t number) {
return number < 2 ? number : fibonacci(number-1) + fibonacci(number-2);
}
TEST_CASE("Benchmark Fibonacci", "[!benchmark]") {
REQUIRE(fibonacci(5) == 5);
BENCHMARK("fibonacci 20") { return fibonacci(20); };
REQUIRE(fibonacci(25) == 75'025);
BENCHMARK("fibonacci 25") { return fibonacci(25); };
}
```

迁移至 v3 时,建议参考官方迁移指南,v2.x 版本仍可从 GitHub 的对应分支获取。


项目仓库:GitHub

#GitHub #开源 #Catch2 #C++ #测试框架 #单元测试 #BDD #基准测试 #TDD
@GitHubTrendingHub
More from @githubtrendinghub
  1. Oct 4, 2026DigitalOcean 终止 Open Source Credits 计划:云主机免费额度不再发放 DigitalOcean 取消了向开源项目提供云主机免费额度的计划,已不再接受…
  2. Oct 4, 2026Effect:TypeScript 生产级应用框架 Effect 是一个用于构建稳健、类型安全、可维护的生产级 TypeScript 应用的库,解决 typed errors、依赖…
  3. Oct 3, 2026Marketing Skills:给 AI 编程代理装上的营销技能库 面向技术型营销人和创始人,让 Claude Code、Codex、Cursor 等代理直接接手转化优化、文案、…
  4. Oct 3, 2026Caveman:让 AI 编程助手少说废话省 token 一个规则文件,让 Claude Code、Codex、Cursor 等 30 多个 agent 用「原始人语」回答,砍掉客…
  5. Oct 1, 2026yt-dlp:被 IFPI 点名列入欧盟盗版观察名单 国际唱片业联合会(IFPI)在提交给欧盟假冒与盗版观察名单的意见中,把 yt-dlp 称为「音乐产业的重大麻烦」,归入「流媒体…
  6. Oct 1, 2026Context Mode:给 AI 编程代理做上下文窗口优化 它把 MCP 工具调用的原始数据挡在上下文窗口之外,并在对话压缩后恢复工作状态,适合重度使用 AI 编程代理的开发者。…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →