Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
183 changes: 84 additions & 99 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,134 +1,119 @@
# GoogleTest

### Announcements
**GoogleTest** is Google’s C++ test framework, designed for writing reliable and maintainable tests.

#### Documentation Updates
> 📄 **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 Google’s internal systems
> 🔮 **Coming Soon**: Integration with [Abseil](https://github.com/abseil/abseil-cpp)

Our documentation is now live on GitHub Pages at
https://google.github.io/googletest/. We recommend browsing the documentation on
GitHub Pages rather than directly in the repository.
---

#### Release 1.17.0
## 📚 Table of Contents

[Release 1.17.0](https://github.com/google/googletest/releases/tag/v1.17.0) is
now available.
- [Getting Started](#getting-started)
- [Features](#features)
- [Supported Platforms](#supported-platforms)
- [Who’s Using GoogleTest?](#whos-using-googletest)
- [Related Tools & Projects](#related-tools--projects)
- [Contributing](#contributing)

The 1.17.x branch
[requires at least C++17](https://opensource.google/documentation/policies/cplusplus-support#c_language_standard).
---

#### Continuous Integration
## Getting Started

We use Google's internal systems for continuous integration.
Visit the [GoogleTest User’s Guide](https://google.github.io/googletest/) for comprehensive documentation.

#### Coming Soon
We recommend starting with the [GoogleTest Primer](https://google.github.io/googletest/primer.html) to get a feel for writing your first tests.

* We are planning to take a dependency on
[Abseil](https://github.com/abseil/abseil-cpp).
Instructions for building GoogleTest can be found in the [googletest/README.md](googletest/README.md) file.

## Welcome to **GoogleTest**, Google's C++ test framework!
---

This repository is a merger of the formerly separate GoogleTest and GoogleMock
projects. These were so closely related that it makes sense to maintain and
release them together.
## Features

### Getting Started
GoogleTest offers a rich set of capabilities for testing C++ code:

See the [GoogleTest User's Guide](https://google.github.io/googletest/) for
documentation. We recommend starting with the
[GoogleTest Primer](https://google.github.io/googletest/primer.html).
- **xUnit Framework**
Follows the well-known [xUnit architecture](https://en.wikipedia.org/wiki/XUnit) for structuring tests.

More information about building GoogleTest can be found at
[googletest/README.md](googletest/README.md).
- **Automatic Test Discovery**
Tests are automatically detected and executed—no manual registration required.

## Features
- **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.

* xUnit test framework: \
Googletest is based on the [xUnit](https://en.wikipedia.org/wiki/XUnit)
testing framework, a popular architecture for unit testing
* Test discovery: \
Googletest automatically discovers and runs your tests, eliminating the need
to manually register your tests
* Rich set of assertions: \
Googletest provides a variety of assertions, such as equality, inequality,
exceptions, and more, making it easy to test your code
* User-defined assertions: \
You can define your own assertions with Googletest, making it simple to
write tests that are specific to your code
* Death tests: \
Googletest supports death tests, which verify that your code exits in a
certain way, making it useful for testing error-handling code
* Fatal and non-fatal failures: \
You can specify whether a test failure should be treated as fatal or
non-fatal with Googletest, allowing tests to continue running even if a
failure occurs
* Value-parameterized tests: \
Googletest supports value-parameterized tests, which run multiple times with
different input values, making it useful for testing functions that take
different inputs
* Type-parameterized tests: \
Googletest also supports type-parameterized tests, which run with different
data types, making it useful for testing functions that work with different
data types
* Various options for running tests: \
Googletest provides many options for running tests including running
individual tests, running tests in a specific order and running tests in
parallel
- **Flexible Execution**
Run individual tests, filter tests by name, or run tests in parallel.

---

## Supported Platforms

GoogleTest follows Google's
[Foundational C++ Support Policy](https://opensource.google/documentation/policies/cplusplus-support).
See
[this table](https://github.com/google/oss-policies-info/blob/main/foundational-cxx-support-matrix.md)
for a list of currently supported versions of compilers, platforms, and build
tools.
GoogleTest adheres to Google’s [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.

---

## Who’s 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/)

---

## Who Is Using GoogleTest?
## Related Tools & Projects

In addition to many internal projects at Google, GoogleTest is also used by the
following notable projects:
- 🎛 [GTest Runner](https://github.com/nholthaus/gtest-runner)
Qt-based GUI for running tests on Windows and Linux.

* The [Chromium projects](https://www.chromium.org/) (behind the Chrome
browser and Chrome OS).
* The [LLVM](https://llvm.org/) compiler.
* [Protocol Buffers](https://github.com/google/protobuf), Google's data
interchange format.
* The [OpenCV](https://opencv.org/) computer vision library.
- 📊 [GoogleTest UI](https://github.com/ospector/gtest-gbar)
C# GUI that runs tests, displays results, and shows failure details interactively.

## Related Open Source Projects
- 🧪 [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 Runner](https://github.com/nholthaus/gtest-runner) is a Qt5 based
automated test-runner and Graphical User Interface with powerful features for
Windows and Linux platforms.
- ⚡ [gtest-parallel](https://github.com/google/gtest-parallel)
A parallel test runner for speeding up test execution.

[GoogleTest UI](https://github.com/ospector/gtest-gbar) is a test runner that
runs your test binary, allows you to track its progress via a progress bar, and
displays a list of test failures. Clicking on one shows failure text. GoogleTest
UI is written in C#.
- 🧩 [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.

[GTest TAP Listener](https://github.com/kinow/gtest-tap-listener) is an event
listener for GoogleTest that implements the
[TAP protocol](https://en.wikipedia.org/wiki/Test_Anything_Protocol) for test
result output. If your test runner understands TAP, you may find it useful.
- 🧪 [C++ TestMate (VS Code)](https://github.com/matepek/vscode-catch2-test-adapter)
Advanced test runner extension with support for GoogleTest.

[gtest-parallel](https://github.com/google/gtest-parallel) is a test runner that
runs tests from your binary in parallel to provide significant speed-up.
- 🥒 [Cornichon](https://pypi.org/project/cornichon/)
A Gherkin DSL parser that generates stub code for GoogleTest.

[GoogleTest Adapter](https://marketplace.visualstudio.com/items?itemName=DavidSchuldenfrei.gtest-adapter)
is a VS Code extension allowing to view GoogleTest in a tree view and run/debug
your tests.
---

[C++ TestMate](https://github.com/matepek/vscode-catch2-test-adapter) is a VS
Code extension allowing to view GoogleTest in a tree view and run/debug your
tests.
## Contributing

[Cornichon](https://pypi.org/project/cornichon/) is a small Gherkin DSL parser
that generates stub code for GoogleTest.
We welcome contributions!

## Contributing Changes
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.

Please read
[`CONTRIBUTING.md`](https://github.com/google/googletest/blob/main/CONTRIBUTING.md)
for details on how to contribute to this project.
---

Happy testing!
**Happy testing!**