google/googletest
GitHub: google/googletest
Google 官方的 C++ 单元测试与 Mock 框架,提供断言、测试发现、参数化测试、死亡测试等完整能力。
Stars: 38285 | Forks: 10710
# GoogleTest
### 公告
#### 文档更新
我们的文档现已在 GitHub Pages 上发布,地址为
https://google.github.io/googletest/。我们建议在
GitHub Pages 上浏览文档,而不是直接在代码库中查看。
#### 1.17.0 版本
[1.17.0 版本](https://github.com/google/googletest/releases/tag/v1.17.0) 现已发布。
1.17.x 分支[至少需要 C++17](https://opensource.google/documentation/policies/cplusplus-support#c_language_standard)。
#### 持续集成
我们使用 Google 的内部系统进行持续集成。
#### 即将推出
* 我们计划依赖 [Abseil](https://github.com/abseil/abseil-cpp)。
## 欢迎使用 **GoogleTest**,Google 的 C++ 测试框架!
此代码库由原先独立的 GoogleTest 和 GoogleMock 项目合并而成。由于它们关系密切,因此将其维护和发布在一起是合理的。
### 入门指南
请参阅 [GoogleTest 用户指南](https://google.github.io/googletest/) 获取文档。我们建议从 [GoogleTest 入门教程](https://google.github.io/googletest/primer.html) 开始。
关于构建 GoogleTest 的更多信息可以在 [googletest/README.md](googletest/README.md) 中找到。
## 特性
* xUnit 测试框架:\
Googletest 基于 [xUnit](https://en.wikipedia.org/wiki/XUnit) 测试框架,这是一种流行的单元测试架构
* 测试发现:\
Googletest 会自动发现并运行您的测试,无需手动注册测试
* 丰富的断言集:\
Googletest 提供多种断言,如相等、不等、异常等,便于测试代码
* 用户自定义断言:\
您可以使用 Googletest 定义自己的断言,简化针对特定代码的测试编写
* 死亡测试:\
Googletest 支持死亡测试,用于验证代码是否以特定方式退出,适用于测试错误处理代码
* 致命和非致命失败:\
使用 Googletest,您可以指定测试失败应被视为致命还是非致命,即使发生失败也能继续运行测试
* 值参数化测试:\
Googletest 支持值参数化测试,可使用不同的输入值多次运行,适用于测试接受不同输入的函数
* 类型参数化测试:\
Googletest 还支持类型参数化测试,可使用不同的数据类型运行,适用于测试处理不同数据类型的函数
* 多种测试运行选项:\
Googletest 提供多种运行测试的选项,包括运行单个测试、按特定顺序运行测试以及并行运行测试
## 支持的平台
GoogleTest 遵循 Google 的[基础 C++ 支持政策](https://opensource.google/documentation/policies/cplusplus-support)。
请参阅[此表格](https://github.com/google/oss-policies-info/blob/main/foundational-cxx-support-matrix.md) 查看当前支持的编译器、平台和构建工具版本列表。
## 谁在使用 GoogleTest?
除了 Google 内部的许多项目外,以下知名项目也在使用 GoogleTest:
* [Chromium 项目](https://www.chromium.org/)(Chrome 浏览器和 Chrome OS 背后的项目)。
* [LLVM](https://llvm.org/) 编译器。
* [Protocol Buffers](https://github.com/google/protobuf),Google 的数据交换格式。
* [OpenCV](https://opencv.org/) 计算机视觉库。
## 相关开源项目
[GTest Runner](https://github.com/nholthaus/gtest-runner) 是一个基于 Qt5 的自动化测试运行器和图形用户界面,适用于 Windows 和 Linux 平台,具有强大的功能。
[GoogleTest UI](https://github.com/ospector/gtest-gbar) 是一个测试运行器,它运行您的测试二进制文件,允许您通过进度条跟踪其进度,并显示测试失败列表。点击其中一项可显示失败文本。GoogleTest UI 使用 C# 编写。
[GTest TAP Listener](https://github.com/kinow/gtest-tap-listener) 是 GoogleTest 的事件监听器,实现了用于测试结果输出的 [TAP 协议](https://en.wikipedia.org/wiki/Test_Anything_Protocol)。如果您的测试运行器支持 TAP,您可能会发现它很有用。
[gtest-parallel](https://github.com/google/gtest-parallel) 是一个测试运行器,可以并行运行二进制文件中的测试,从而显著提高速度。
[GoogleTest Adapter](https://marketplace.visualstudio.com/items?itemName=DavidSchuldenfrei.gtest-adapter) 是一个 VS Code 扩展,允许在树视图中查看 GoogleTest 并运行/调试您的测试。
[C++ TestMate](https://github.com/matepek/vscode-catch2-test-adapter) 是一个 VS Code 扩展,允许在树视图中查看 GoogleTest 并运行/调试您的测试。
[Cornichon](https://pypi.org/project/cornichon/) 是一个小型的 Gherkin DSL 解析器,可为 GoogleTest 生成桩代码。
## 贡献变更
请阅读 [`CONTRIBUTING.md`](https://github.com/google/googletest/blob/main/CONTRIBUTING.md) 了解如何为本项目做出贡献的详细信息。
祝测试愉快!
标签:Abseil, Bash脚本, C++, C++17, Death Tests, DNS解析, Google, GoogleMock, GoogleTest, HTTP头分析, Mocking, Nuclei, TDD, xUnit, 单元测试, 开源项目, 数据擦除, 断言, 模拟框架, 测试发现, 测试框架, 测试驱动开发, 白盒测试