README.md 4.65 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
Welcome to **Google Test**, Google's C++ test framework!
5

Billy Donahue's avatar
Billy Donahue committed
6
7
8
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.
9

Billy Donahue's avatar
Billy Donahue committed
10
11
12
13
Please see the project page above for more information as well as the
mailing list for questions, discussions, and development.  There is
also an IRC channel on OFTC (irc.oftc.net) #gtest available.  Please
join us!
Billy Donahue's avatar
Billy Donahue committed
14

Billy Donahue's avatar
Billy Donahue committed
15
16
17
**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
18
19
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
20
21
22
23
24
25
26
27
28
29
30
31
32

## 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.
33

Billy Donahue's avatar
Billy Donahue committed
34
## Platforms ##
35

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

Billy Donahue's avatar
Billy Donahue committed
38
39
40
41
42
43
44
  * Linux
  * Mac OS X
  * Windows
  * Cygwin
  * MinGW
  * Windows Mobile
  * Symbian
45

Billy Donahue's avatar
Billy Donahue committed
46
## Who Is Using Google Test? ##
47

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

Billy Donahue's avatar
Billy Donahue committed
51
52
53
54
55
56
  * The [Chromium projects](http://www.chromium.org/) (behind the Chrome
    browser and Chrome OS).
  * The [LLVM](http://llvm.org/) compiler.
  * [Protocol Buffers](http://code.google.com/p/protobuf/), Google's data
    interchange format.
  * The [OpenCV](http://opencv.org/) computer vision library.
57

Billy Donahue's avatar
Billy Donahue committed
58
## Related Open Source Projects ##
59

Billy Donahue's avatar
Billy Donahue committed
60
61
62
63
[Google Test UI](http://code.google.com/p/gtest-gbar/) is test runner that runs
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#.
64

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

Billy Donahue's avatar
Billy Donahue committed
70
## Requirements ##
71

Billy Donahue's avatar
Billy Donahue committed
72
73
74
75
76
77
78
79
80
81
82
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
<googletestframework@googlegroups.com>. Patches for fixing them are
even more welcome!

### Linux Requirements ###
83

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

Billy Donahue's avatar
Billy Donahue committed
87
88
89
90
  * GNU-compatible Make or gmake
  * POSIX-standard shell
  * POSIX(-2) Regular Expressions (regex.h)
  * A C++98-standard-compliant compiler
91

Billy Donahue's avatar
Billy Donahue committed
92
### Windows Requirements ###
93

Billy Donahue's avatar
Billy Donahue committed
94
  * Microsoft Visual C++ v7.1 or newer
Billy Donahue's avatar
Billy Donahue committed
95

Billy Donahue's avatar
Billy Donahue committed
96
### Cygwin Requirements ###
97

Billy Donahue's avatar
Billy Donahue committed
98
  * Cygwin v1.5.25-14 or newer
99

Billy Donahue's avatar
Billy Donahue committed
100
### Mac OS X Requirements ###
101

Billy Donahue's avatar
Billy Donahue committed
102
103
  * Mac OS X v10.4 Tiger or newer
  * XCode Developer Tools
104

Billy Donahue's avatar
Billy Donahue committed
105
106
107
Also, you'll need [CMake](http://www.cmake.org/) v2.6.4 or higher if
you want to build the samples using the provided CMake script, regardless
of the platform.
108

Billy Donahue's avatar
Billy Donahue committed
109
### Requirements for Contributors ###
110

Billy Donahue's avatar
Billy Donahue committed
111
112
113
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:
114

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

Billy Donahue's avatar
Billy Donahue committed
119
## Regenerating Source Files ##
Billy Donahue's avatar
Billy Donahue committed
120
121

Some of Google Test's source files are generated from templates (not
Billy Donahue's avatar
Billy Donahue committed
122
in the C++ sense) using a script.
Billy Donahue's avatar
Billy Donahue committed
123
124
125
126
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
127
128
129
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
130
generator script.  See the [Pump Manual](googletest/docs/PumpManual.md).
Billy Donahue's avatar
Billy Donahue committed
131
132
133

### Contributing Code ###

Billy Donahue's avatar
Billy Donahue committed
134
135
We welcome patches.  Please read the
[Developer's Guide](googletest/docs/DevGuide.md)
Billy Donahue's avatar
Billy Donahue committed
136
137
138
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.
139

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