4 [![Build Status](https://travis-ci.org/google/googletest.svg?branch=master)](https://travis-ci.org/google/googletest)
6 Welcome to **Google Test**, Google's C++ test framework!
8 This repository is a merger of the formerly separate GoogleTest and
9 GoogleMock projects. These were so closely related that it makes sense to
10 maintain and release them together.
12 Please see the project page above for more information as well as the
13 mailing list for questions, discussions, and development. There is
14 also an IRC channel on OFTC (irc.oftc.net) #gtest available. Please
17 Getting started information for **Google Test** is available in the
18 [Google Test Primer](googletest/docs/Primer.md) documentation.
20 **Google Mock** is an extension to Google Test for writing and using C++ mock
21 classes. See the separate [Google Mock documentation](googlemock/README.md).
23 More detailed documentation for googletest (including build instructions) are
24 in its interior [googletest/README.md](googletest/README.md) file.
28 * An [XUnit](https://en.wikipedia.org/wiki/XUnit) test framework.
30 * A rich set of assertions.
31 * User-defined assertions.
33 * Fatal and non-fatal failures.
34 * Value-parameterized tests.
35 * Type-parameterized tests.
36 * Various options for running the tests.
37 * XML test report generation.
41 Google test has been used on a variety of platforms:
51 ## Who Is Using Google Test? ##
53 In addition to many internal projects at Google, Google Test is also used by
54 the following notable projects:
56 * The [Chromium projects](http://www.chromium.org/) (behind the Chrome
57 browser and Chrome OS).
58 * The [LLVM](http://llvm.org/) compiler.
59 * [Protocol Buffers](https://github.com/google/protobuf), Google's data
61 * The [OpenCV](http://opencv.org/) computer vision library.
63 ## Related Open Source Projects ##
65 [Google Test UI](https://github.com/ospector/gtest-gbar) is test runner that runs
66 your test binary, allows you to track its progress via a progress bar, and
67 displays a list of test failures. Clicking on one shows failure text. Google
68 Test UI is written in C#.
70 [GTest TAP Listener](https://github.com/kinow/gtest-tap-listener) is an event
71 listener for Google Test that implements the
72 [TAP protocol](https://en.wikipedia.org/wiki/Test_Anything_Protocol) for test
73 result output. If your test runner understands TAP, you may find it useful.
77 Google Test is designed to have fairly minimal requirements to build
78 and use with your projects, but there are some. Currently, we support
79 Linux, Windows, Mac OS X, and Cygwin. We will also make our best
80 effort to support other platforms (e.g. Solaris, AIX, and z/OS).
81 However, since core members of the Google Test project have no access
82 to these platforms, Google Test may have outstanding issues there. If
83 you notice any problems on your platform, please notify
84 <googletestframework@googlegroups.com>. Patches for fixing them are
87 ### Linux Requirements ###
89 These are the base requirements to build and use Google Test from a source
90 package (as described below):
92 * GNU-compatible Make or gmake
93 * POSIX-standard shell
94 * POSIX(-2) Regular Expressions (regex.h)
95 * A C++98-standard-compliant compiler
97 ### Windows Requirements ###
99 * Microsoft Visual C++ v7.1 or newer
101 ### Cygwin Requirements ###
103 * Cygwin v1.5.25-14 or newer
105 ### Mac OS X Requirements ###
107 * Mac OS X v10.4 Tiger or newer
108 * Xcode Developer Tools
110 ### Requirements for Contributors ###
112 We welcome patches. If you plan to contribute a patch, you need to
113 build Google Test and its own tests from a git checkout (described
114 below), which has further requirements:
116 * [Python](https://www.python.org/) v2.3 or newer (for running some of
117 the tests and re-generating certain source files from templates)
118 * [CMake](https://cmake.org/) v2.6.4 or newer
120 ## Regenerating Source Files ##
122 Some of Google Test's source files are generated from templates (not
123 in the C++ sense) using a script.
125 file include/gtest/internal/gtest-type-util.h.pump is used to generate
126 gtest-type-util.h in the same directory.
128 You don't need to worry about regenerating the source files
129 unless you need to modify them. You would then modify the
130 corresponding `.pump` files and run the '[pump.py](googletest/scripts/pump.py)'
131 generator script. See the [Pump Manual](googletest/docs/PumpManual.md).
133 ### Contributing Code ###
135 We welcome patches. Please read the
136 [Developer's Guide](googletest/docs/DevGuide.md)
137 for how you can contribute. In particular, make sure you have signed
138 the Contributor License Agreement, or we won't be able to accept the