144348Simp# GoogleTest
277298Sobrien
377298Sobrien### Announcements
444348Simp
544348Simp#### Live at Head
644348Simp
744348SimpGoogleTest now follows the
844348Simp[Abseil Live at Head philosophy](https://abseil.io/about/philosophy#upgrade-support).
944348SimpWe recommend
1044348Simp[updating to the latest commit in the `main` branch as often as possible](https://github.com/abseil/abseil-cpp/blob/master/FAQ.md#what-is-live-at-head-and-how-do-i-do-it).
1144348SimpWe do publish occasional semantic versions, tagged with
1244348Simp`v${major}.${minor}.${patch}` (e.g. `v1.13.0`).
1344348Simp
1444348Simp#### Documentation Updates
1544348Simp
1644348SimpOur documentation is now live on GitHub Pages at
1744348Simphttps://google.github.io/googletest/. We recommend browsing the documentation on
1844348SimpGitHub Pages rather than directly in the repository.
1944348Simp
2044348Simp#### Release 1.13.0
2144348Simp
2244348Simp[Release 1.13.0](https://github.com/google/googletest/releases/tag/v1.13.0) is
2344348Simpnow available.
2444348Simp
2544348SimpThe 1.13.x branch requires at least C++14.
2644348Simp
2744348Simp#### Continuous Integration
2844348Simp
2944348SimpWe use Google's internal systems for continuous integration. \
3044348SimpGitHub Actions were added for the convenience of open-source contributors. They
3160484Sobrienare exclusively maintained by the open-source community and not used by the
3260484SobrienGoogleTest team.
3360484Sobrien
3460484Sobrien#### Coming Soon
3560484Sobrien
3660484Sobrien*   We are planning to take a dependency on
3760484Sobrien    [Abseil](https://github.com/abseil/abseil-cpp).
3860484Sobrien*   More documentation improvements are planned.
3960484Sobrien
4060484Sobrien## Welcome to **GoogleTest**, Google's C++ test framework!
4160484Sobrien
4260484SobrienThis repository is a merger of the formerly separate GoogleTest and GoogleMock
4360484Sobrienprojects. These were so closely related that it makes sense to maintain and
4460484Sobrienrelease them together.
4560484Sobrien
4660484Sobrien### Getting Started
4760484Sobrien
4860484SobrienSee the [GoogleTest User's Guide](https://google.github.io/googletest/) for
4960484Sobriendocumentation. We recommend starting with the
5060484Sobrien[GoogleTest Primer](https://google.github.io/googletest/primer.html).
5160484Sobrien
5260484SobrienMore information about building GoogleTest can be found at
5360484Sobrien[googletest/README.md](googletest/README.md).
5460484Sobrien
5560484Sobrien## Features
5660484Sobrien
5760484Sobrien*   xUnit test framework: \
5860484Sobrien    Googletest is based on the [xUnit](https://en.wikipedia.org/wiki/XUnit)
5960484Sobrien    testing framework, a popular architecture for unit testing
6060484Sobrien*   Test discovery: \
6160484Sobrien    Googletest automatically discovers and runs your tests, eliminating the need
6260484Sobrien    to manually register your tests
6360484Sobrien*   Rich set of assertions: \
6460484Sobrien    Googletest provides a variety of assertions, such as equality, inequality,
6560484Sobrien    exceptions, and more, making it easy to test your code
6660484Sobrien*   User-defined assertions: \
6760484Sobrien    You can define your own assertions with Googletest, making it simple to
6860484Sobrien    write tests that are specific to your code
6960484Sobrien*   Death tests: \
7060484Sobrien    Googletest supports death tests, which verify that your code exits in a
7160484Sobrien    certain way, making it useful for testing error-handling code
7260484Sobrien*   Fatal and non-fatal failures: \
7360484Sobrien    You can specify whether a test failure should be treated as fatal or
7460484Sobrien    non-fatal with Googletest, allowing tests to continue running even if a
7560484Sobrien    failure occurs
7660484Sobrien*   Value-parameterized tests: \
7760484Sobrien    Googletest supports value-parameterized tests, which run multiple times with
7860484Sobrien    different input values, making it useful for testing functions that take
7960484Sobrien    different inputs
8060484Sobrien*   Type-parameterized tests: \
8160484Sobrien    Googletest also supports type-parameterized tests, which run with different
8260484Sobrien    data types, making it useful for testing functions that work with different
8360484Sobrien    data types
8460484Sobrien*   Various options for running tests: \
8560484Sobrien    Googletest provides many options for running tests including running
8660484Sobrien    individual tests, running tests in a specific order and running tests in
8760484Sobrien    parallel
8877298Sobrien
8960484Sobrien## Supported Platforms
9044348Simp
9144348SimpGoogleTest follows Google's
9244348Simp[Foundational C++ Support Policy](https://opensource.google/documentation/policies/cplusplus-support).
9344348SimpSee
9444348Simp[this table](https://github.com/google/oss-policies-info/blob/main/foundational-cxx-support-matrix.md)
9544348Simpfor a list of currently supported versions of compilers, platforms, and build
9644348Simptools.
9744348Simp
9844348Simp## Who Is Using GoogleTest?
9944348Simp
10044348SimpIn addition to many internal projects at Google, GoogleTest is also used by the
10144348Simpfollowing notable projects:
10244348Simp
10344348Simp*   The [Chromium projects](http://www.chromium.org/) (behind the Chrome browser
10444348Simp    and Chrome OS).
10560484Sobrien*   The [LLVM](http://llvm.org/) compiler.
10660484Sobrien*   [Protocol Buffers](https://github.com/google/protobuf), Google's data
10760484Sobrien    interchange format.
10860484Sobrien*   The [OpenCV](http://opencv.org/) computer vision library.
10944348Simp
11044348Simp## Related Open Source Projects
11144348Simp
11244348Simp[GTest Runner](https://github.com/nholthaus/gtest-runner) is a Qt5 based
11344348Simpautomated test-runner and Graphical User Interface with powerful features for
11444348SimpWindows and Linux platforms.
11544348Simp
11644348Simp[GoogleTest UI](https://github.com/ospector/gtest-gbar) is a test runner that
11744348Simpruns your test binary, allows you to track its progress via a progress bar, and
11844348Simpdisplays a list of test failures. Clicking on one shows failure text. GoogleTest
11944348SimpUI is written in C#.
12044348Simp
12144348Simp[GTest TAP Listener](https://github.com/kinow/gtest-tap-listener) is an event
12244348Simplistener for GoogleTest that implements the
12360484Sobrien[TAP protocol](https://en.wikipedia.org/wiki/Test_Anything_Protocol) for test
12477298Sobrienresult output. If your test runner understands TAP, you may find it useful.
12577298Sobrien
12677298Sobrien[gtest-parallel](https://github.com/google/gtest-parallel) is a test runner that
12777298Sobrienruns tests from your binary in parallel to provide significant speed-up.
12877298Sobrien
12977298Sobrien[GoogleTest Adapter](https://marketplace.visualstudio.com/items?itemName=DavidSchuldenfrei.gtest-adapter)
13077298Sobrienis a VS Code extension allowing to view GoogleTest in a tree view and run/debug
13177298Sobrienyour tests.
13277298Sobrien
13360484Sobrien[C++ TestMate](https://github.com/matepek/vscode-catch2-test-adapter) is a VS
13460484SobrienCode extension allowing to view GoogleTest in a tree view and run/debug your
13560484Sobrientests.
13660484Sobrien
13760484Sobrien[Cornichon](https://pypi.org/project/cornichon/) is a small Gherkin DSL parser
13860484Sobrienthat generates stub code for GoogleTest.
13960484Sobrien
14060484Sobrien## Contributing Changes
14160484Sobrien
14260484SobrienPlease read
14360484Sobrien[`CONTRIBUTING.md`](https://github.com/google/googletest/blob/main/CONTRIBUTING.md)
14460484Sobrienfor details on how to contribute to this project.
14560484Sobrien
14660484SobrienHappy testing!
14760484Sobrien