README.md 5.44 KB
Newer Older
1

Billy Donahue's avatar
Billy Donahue committed
2
# Google Test #
Billy Donahue's avatar
Billy Donahue committed
3

Billy Donahue's avatar
Billy Donahue committed
4
[![Build Status](https://travis-ci.org/google/googletest.svg?branch=master)](https://travis-ci.org/google/googletest)
5
6
[![Build status](https://ci.appveyor.com/api/projects/status/4o38plt0xbo1ubc8/branch/master?svg=true)](https://ci.appveyor.com/project/google/googletest/branch/master)

Billy Donahue's avatar
Billy Donahue committed
7

Billy Donahue's avatar
Billy Donahue committed
8
Welcome to **Google Test**, Google's C++ test framework!
9

Billy Donahue's avatar
Billy Donahue committed
10
11
12
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.
13

Billy Donahue's avatar
Billy Donahue committed
14
15
Please see the project page above for more information as well as the
mailing list for questions, discussions, and development.  There is
16
also an IRC channel on [OFTC](https://webchat.oftc.net/) (irc.oftc.net) #gtest available.  Please
Billy Donahue's avatar
Billy Donahue committed
17
join us!
Billy Donahue's avatar
Billy Donahue committed
18

19
20
21
Getting started information for **Google Test** is available in the 
[Google Test Primer](googletest/docs/Primer.md) documentation.

Billy Donahue's avatar
Billy Donahue committed
22
23
24
**Google Mock** is an extension to Google Test for writing and using C++ mock
classes.  See the separate [Google Mock documentation](googlemock/README.md).

Billy Donahue's avatar
Billy Donahue committed
25
26
More detailed documentation for googletest (including build instructions) are
in its interior [googletest/README.md](googletest/README.md) file.
Billy Donahue's avatar
Billy Donahue committed
27
28
29
30
31
32
33
34
35
36
37
38
39

## Features ##

  * An [XUnit](https://en.wikipedia.org/wiki/XUnit) test framework.
  * Test discovery.
  * A rich set of assertions.
  * User-defined assertions.
  * Death tests.
  * Fatal and non-fatal failures.
  * Value-parameterized tests.
  * Type-parameterized tests.
  * Various options for running the tests.
  * XML test report generation.
40

Billy Donahue's avatar
Billy Donahue committed
41
## Platforms ##
42

Billy Donahue's avatar
Billy Donahue committed
43
Google test has been used on a variety of platforms:
44

Billy Donahue's avatar
Billy Donahue committed
45
46
47
48
49
50
51
  * Linux
  * Mac OS X
  * Windows
  * Cygwin
  * MinGW
  * Windows Mobile
  * Symbian
52

Billy Donahue's avatar
Billy Donahue committed
53
## Who Is Using Google Test? ##
54

Billy Donahue's avatar
Billy Donahue committed
55
56
In addition to many internal projects at Google, Google Test is also used by
the following notable projects:
57

Billy Donahue's avatar
Billy Donahue committed
58
59
60
  * The [Chromium projects](http://www.chromium.org/) (behind the Chrome
    browser and Chrome OS).
  * The [LLVM](http://llvm.org/) compiler.
61
  * [Protocol Buffers](https://github.com/google/protobuf), Google's data
Billy Donahue's avatar
Billy Donahue committed
62
63
    interchange format.
  * The [OpenCV](http://opencv.org/) computer vision library.
Eduardo Caceres's avatar
Eduardo Caceres committed
64
  * [tiny-dnn](https://github.com/tiny-dnn/tiny-dnn): header only, dependency-free deep learning framework in C++11.
65

Billy Donahue's avatar
Billy Donahue committed
66
## Related Open Source Projects ##
67

68
[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.
69

Billy Donahue's avatar
Billy Donahue committed
70
[Google Test UI](https://github.com/ospector/gtest-gbar) is test runner that runs
Billy Donahue's avatar
Billy Donahue committed
71
72
73
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. Google
Test UI is written in C#.
74

Billy Donahue's avatar
Billy Donahue committed
75
76
[GTest TAP Listener](https://github.com/kinow/gtest-tap-listener) is an event
listener for Google Test that implements the
77
[TAP protocol](https://en.wikipedia.org/wiki/Test_Anything_Protocol) for test
Billy Donahue's avatar
Billy Donahue committed
78
result output. If your test runner understands TAP, you may find it useful.
79

80
81
82
[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.

Billy Donahue's avatar
Billy Donahue committed
83
## Requirements ##
84

Billy Donahue's avatar
Billy Donahue committed
85
86
87
88
89
90
91
Google Test is designed to have fairly minimal requirements to build
and use with your projects, but there are some.  Currently, we support
Linux, Windows, Mac OS X, and Cygwin.  We will also make our best
effort to support other platforms (e.g. Solaris, AIX, and z/OS).
However, since core members of the Google Test project have no access
to these platforms, Google Test may have outstanding issues there.  If
you notice any problems on your platform, please notify
92
[googletestframework@googlegroups.com](https://groups.google.com/forum/#!forum/googletestframework). Patches for fixing them are
Billy Donahue's avatar
Billy Donahue committed
93
94
95
even more welcome!

### Linux Requirements ###
96

Billy Donahue's avatar
Billy Donahue committed
97
98
These are the base requirements to build and use Google Test from a source
package (as described below):
99

Billy Donahue's avatar
Billy Donahue committed
100
101
102
103
  * GNU-compatible Make or gmake
  * POSIX-standard shell
  * POSIX(-2) Regular Expressions (regex.h)
  * A C++98-standard-compliant compiler
104

Billy Donahue's avatar
Billy Donahue committed
105
### Windows Requirements ###
106

107
  * Microsoft Visual C++ 2010 or newer
Billy Donahue's avatar
Billy Donahue committed
108

Billy Donahue's avatar
Billy Donahue committed
109
### Cygwin Requirements ###
110

Billy Donahue's avatar
Billy Donahue committed
111
  * Cygwin v1.5.25-14 or newer
112

Billy Donahue's avatar
Billy Donahue committed
113
### Mac OS X Requirements ###
114

Billy Donahue's avatar
Billy Donahue committed
115
  * Mac OS X v10.4 Tiger or newer
Matt Rajca's avatar
Matt Rajca committed
116
  * Xcode Developer Tools
117

Billy Donahue's avatar
Billy Donahue committed
118
### Requirements for Contributors ###
119

Billy Donahue's avatar
Billy Donahue committed
120
121
122
We welcome patches.  If you plan to contribute a patch, you need to
build Google Test and its own tests from a git checkout (described
below), which has further requirements:
123

124
  * [Python](https://www.python.org/) v2.3 or newer (for running some of
Billy Donahue's avatar
Billy Donahue committed
125
    the tests and re-generating certain source files from templates)
126
  * [CMake](https://cmake.org/) v2.6.4 or newer
127

Billy Donahue's avatar
Billy Donahue committed
128
## Regenerating Source Files ##
Billy Donahue's avatar
Billy Donahue committed
129
130

Some of Google Test's source files are generated from templates (not
Billy Donahue's avatar
Billy Donahue committed
131
in the C++ sense) using a script.
Billy Donahue's avatar
Billy Donahue committed
132
133
134
135
For example, the
file include/gtest/internal/gtest-type-util.h.pump is used to generate
gtest-type-util.h in the same directory.

Billy Donahue's avatar
Billy Donahue committed
136
137
138
You don't need to worry about regenerating the source files
unless you need to modify them.  You would then modify the
corresponding `.pump` files and run the '[pump.py](googletest/scripts/pump.py)'
Billy Donahue's avatar
Billy Donahue committed
139
generator script.  See the [Pump Manual](googletest/docs/PumpManual.md).
Billy Donahue's avatar
Billy Donahue committed
140
141
142

### Contributing Code ###

Billy Donahue's avatar
Billy Donahue committed
143
144
We welcome patches.  Please read the
[Developer's Guide](googletest/docs/DevGuide.md)
Billy Donahue's avatar
Billy Donahue committed
145
146
147
for how you can contribute. In particular, make sure you have signed
the Contributor License Agreement, or we won't be able to accept the
patch.
148

Billy Donahue's avatar
Billy Donahue committed
149
Happy testing!