googletest/README.md
2025-06-25 15:38:41 +03:00

120 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# GoogleTest
**GoogleTest** is Googles C++ test framework, designed for writing reliable and maintainable tests.
> 📄 **Documentation**: [https://google.github.io/googletest/](https://google.github.io/googletest/)
> 🚀 **Latest Release**: [v1.17.0](https://github.com/google/googletest/releases/tag/v1.17.0)
> ⚠️ **Minimum Requirement**: C++17
> ✅ **CI**: Built using Googles internal systems
> 🔮 **Coming Soon**: Integration with [Abseil](https://github.com/abseil/abseil-cpp)
---
## 📚 Table of Contents
- [Getting Started](#getting-started)
- [Features](#features)
- [Supported Platforms](#supported-platforms)
- [Whos Using GoogleTest?](#whos-using-googletest)
- [Related Tools & Projects](#related-tools--projects)
- [Contributing](#contributing)
---
## Getting Started
Visit the [GoogleTest Users Guide](https://google.github.io/googletest/) for comprehensive documentation.
We recommend starting with the [GoogleTest Primer](https://google.github.io/googletest/primer.html) to get a feel for writing your first tests.
Instructions for building GoogleTest can be found in the [googletest/README.md](googletest/README.md) file.
---
## Features
GoogleTest offers a rich set of capabilities for testing C++ code:
- **xUnit Framework**
Follows the well-known [xUnit architecture](https://en.wikipedia.org/wiki/XUnit) for structuring tests.
- **Automatic Test Discovery**
Tests are automatically detected and executed—no manual registration required.
- **Comprehensive Assertions**
Includes a wide variety of assertions for testing equality, inequality, exceptions, boolean conditions, floating-point values, and more.
- **Custom Assertions**
Easily define your own assertions for application-specific checks.
- **Death Tests**
Validate that certain code paths cause the program to exit (useful for error handling).
- **Fatal vs. Non-Fatal Failures**
Choose whether a failure should abort the test or allow further execution.
- **Value-Parameterized Tests**
Run a test case multiple times with different input values.
- **Type-Parameterized Tests**
Run the same test logic over multiple data types.
- **Flexible Execution**
Run individual tests, filter tests by name, or run tests in parallel.
---
## Supported Platforms
GoogleTest adheres to Googles [Foundational C++ Support Policy](https://opensource.google/documentation/policies/cplusplus-support).
See the [support matrix](https://github.com/google/oss-policies-info/blob/main/foundational-cxx-support-matrix.md) for details on supported compilers, platforms, and tools.
---
## Whos Using GoogleTest?
GoogleTest is widely adopted both inside and outside of Google. Notable users include:
- [Chromium Project](https://www.chromium.org/)
- [LLVM](https://llvm.org/)
- [Protocol Buffers](https://github.com/protocolbuffers/protobuf)
- [OpenCV](https://opencv.org/)
---
## Related Tools & Projects
- 🎛 [GTest Runner](https://github.com/nholthaus/gtest-runner)
Qt-based GUI for running tests on Windows and Linux.
- 📊 [GoogleTest UI](https://github.com/ospector/gtest-gbar)
C# GUI that runs tests, displays results, and shows failure details interactively.
- 🧪 [GTest TAP Listener](https://github.com/kinow/gtest-tap-listener)
Outputs test results in [TAP format](https://en.wikipedia.org/wiki/Test_Anything_Protocol) for integration with TAP-compatible tools.
- ⚡ [gtest-parallel](https://github.com/google/gtest-parallel)
A parallel test runner for speeding up test execution.
- 🧩 [GoogleTest Adapter (VS Code)](https://marketplace.visualstudio.com/items?itemName=DavidSchuldenfrei.gtest-adapter)
View and run tests in a tree view in Visual Studio Code.
- 🧪 [C++ TestMate (VS Code)](https://github.com/matepek/vscode-catch2-test-adapter)
Advanced test runner extension with support for GoogleTest.
- 🥒 [Cornichon](https://pypi.org/project/cornichon/)
A Gherkin DSL parser that generates stub code for GoogleTest.
---
## Contributing
We welcome contributions!
Please read the [CONTRIBUTING.md](https://github.com/google/googletest/blob/main/CONTRIBUTING.md) guide for details on how to participate in development, report bugs, or submit pull requests.
---
**Happy testing!**