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