1 2 # Google Test # 3 4 [![Build Status](https://travis-ci.org/google/googletest.svg?branch=master)](https://travis-ci.org/google/googletest) 5 6 Welcome to **Google Test**, Google's C++ test framework! 7 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. 11 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 15 join us! 16 17 Getting started information for **Google Test** is available in the 18 [Google Test Primer](googletest/docs/Primer.md) documentation. 19 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). 22 23 More detailed documentation for googletest (including build instructions) are 24 in its interior [googletest/README.md](googletest/README.md) file. 25 26 ## Features ## 27 28 * An [XUnit](https://en.wikipedia.org/wiki/XUnit) test framework. 29 * Test discovery. 30 * A rich set of assertions. 31 * User-defined assertions. 32 * Death tests. 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. 38 39 ## Platforms ## 40 41 Google test has been used on a variety of platforms: 42 43 * Linux 44 * Mac OS X 45 * Windows 46 * Cygwin 47 * MinGW 48 * Windows Mobile 49 * Symbian 50 51 ## Who Is Using Google Test? ## 52 53 In addition to many internal projects at Google, Google Test is also used by 54 the following notable projects: 55 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 60 interchange format. 61 * The [OpenCV](http://opencv.org/) computer vision library. 62 63 ## Related Open Source Projects ## 64 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#. 69 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. 74 75 ## Requirements ## 76 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 (a] googlegroups.com>. Patches for fixing them are 85 even more welcome! 86 87 ### Linux Requirements ### 88 89 These are the base requirements to build and use Google Test from a source 90 package (as described below): 91 92 * GNU-compatible Make or gmake 93 * POSIX-standard shell 94 * POSIX(-2) Regular Expressions (regex.h) 95 * A C++98-standard-compliant compiler 96 97 ### Windows Requirements ### 98 99 * Microsoft Visual C++ v7.1 or newer 100 101 ### Cygwin Requirements ### 102 103 * Cygwin v1.5.25-14 or newer 104 105 ### Mac OS X Requirements ### 106 107 * Mac OS X v10.4 Tiger or newer 108 * XCode Developer Tools 109 110 ### Requirements for Contributors ### 111 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: 115 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 119 120 ## Regenerating Source Files ## 121 122 Some of Google Test's source files are generated from templates (not 123 in the C++ sense) using a script. 124 For example, the 125 file include/gtest/internal/gtest-type-util.h.pump is used to generate 126 gtest-type-util.h in the same directory. 127 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). 132 133 ### Contributing Code ### 134 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 139 patch. 140 141 Happy testing! 142