OLD | NEW |
1 Google C++ Mocking Framework | 1 Google C++ Mocking Framework |
2 ============================ | 2 ============================ |
3 http://code.google.com/p/googlemock/ | 3 http://code.google.com/p/googlemock/ |
4 | 4 |
5 Overview | 5 Overview |
6 -------- | 6 -------- |
7 Google's framework for writing and using C++ mock classes on Linux, | 7 Google's framework for writing and using C++ mock classes on Linux, |
8 Mac OS X, and Windows. Inspired by jMock, EasyMock, and Hamcrest, and | 8 Mac OS X, and Windows. Inspired by jMock, EasyMock, and Hamcrest, and |
9 designed with C++'s specifics in mind, it can help you derive better | 9 designed with C++'s specifics in mind, it can help you derive better |
10 designs of your system and write better tests. | 10 designs of your system and write better tests. |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 supported. The only hard restriction is that while the build directory can be | 170 supported. The only hard restriction is that while the build directory can be |
171 a subdirectory of the source directory, the opposite is not possible and will | 171 a subdirectory of the source directory, the opposite is not possible and will |
172 result in errors. Once you have selected where you wish to build Google Mock, | 172 result in errors. Once you have selected where you wish to build Google Mock, |
173 create the directory if necessary, and enter it. The following steps apply for | 173 create the directory if necessary, and enter it. The following steps apply for |
174 either approach by simply substituting the shell variable SRCDIR with "." for | 174 either approach by simply substituting the shell variable SRCDIR with "." for |
175 building inside the source directory, and the relative path to the source | 175 building inside the source directory, and the relative path to the source |
176 directory otherwise. | 176 directory otherwise. |
177 | 177 |
178 ${SRCDIR}/configure # Standard GNU configure script, --help for more info | 178 ${SRCDIR}/configure # Standard GNU configure script, --help for more info |
179 | 179 |
180 The default behavior of the configure script with respect to locating and using | |
181 Google Test is to first search for a 'gtest-config' in the system path, and | |
182 lacking this, build an internal copy of Google Test. You may optionally specify | |
183 a custom Google Test you wish to build Google Mock against, provided it is | |
184 a new enough version. | |
185 | |
186 # Configure against an installation in '/opt' with '/opt/bin/gtest-config'. | |
187 ${SRCDIR}/configure --with-gtest=/opt | |
188 | |
189 This can also be used to specify a Google Test which hasn't yet been installed. | |
190 However, it must have been configured and built as described in the Google Test | |
191 README before you configure Google Mock. To enable this feature, simply pass | |
192 the directory where you configured and built Google Test (which is not | |
193 necessarily its source directory) to Google Mock's configure script. | |
194 | |
195 # Configure against a build of Google Test in an arbitrary directory. | |
196 ${SRCDIR}/configure --with-gtest=../../my_gtest_build | |
197 | |
198 Finally, if you have a version of Google Test installed but for some reason | |
199 wish to forcibly prevent it from being used, we provide a special option. | |
200 Typically this is not needed as we fall back to the internal Google Test | |
201 packaged with Google Mock if an installed version is either unavailable or too | |
202 old to build Google Mock. When using the internally packaged Google Test, the | |
203 user does *not* need to configure or build it, that is automatically handled by | |
204 Google Mock's build system. | |
205 | |
206 # Force the use of the internally packaged Google Test, despite | |
207 # 'gtest-config' being in your PATH. | |
208 ${SRCDIR}/configure --disable-external-gtest | |
209 | |
210 Once you have successfully configured Google Mock, the build steps are standard | 180 Once you have successfully configured Google Mock, the build steps are standard |
211 for GNU-style OSS packages. | 181 for GNU-style OSS packages. |
212 | 182 |
213 make # Standard makefile following GNU conventions | 183 make # Standard makefile following GNU conventions |
214 make check # Builds and runs all tests - all should pass | 184 make check # Builds and runs all tests - all should pass |
215 | 185 |
216 Other programs will only be able to use Google Mock's functionality if you | |
217 install it in a location which they can access, in Linux this is typically | |
218 under '/usr/local'. The following command will install all of the Google Mock | |
219 libraries, public headers, and utilities necessary for other programs and | |
220 libraries to leverage it. Note that if Google Mock was unable to find an | |
221 external Google Test to build against, it will also install the internally | |
222 packaged Google Test in order to allow the installed Google Mock to function | |
223 properly. This Google Test install will be fully functional, and if installed | |
224 will also be uninstalled by uninstalling Google Mock. | |
225 | |
226 sudo make install # Not necessary, but allows use by other programs | |
227 | |
228 Should you need to remove Google Mock from your system after having installed | |
229 it, run the following command, and it will back out its changes. However, note | |
230 carefully that you must run this command on the *same* Google Mock build that | |
231 you ran the install from, or the results are not predictable. If you install | |
232 Google Mock on your system, and are working from a VCS checkout, make sure you | |
233 run this *before* updating your checkout of the source in order to uninstall | |
234 the same version which you installed. | |
235 | |
236 sudo make uninstall # Must be run against the exact same build as "install" | |
237 | |
238 Your project can build against Google Mock and Google Test simply by leveraging | |
239 the 'gmock-config' script. This script can be invoked directly out of the | |
240 'scripts' subdirectory of the build tree, and it will be installed in the | |
241 binary directory specified during the 'configure'. Here are some examples of | |
242 its use, see 'gmock-config --help' for more detailed information. | |
243 | |
244 gmock-config --min-version=1.0 || echo "Insufficient Google Mock version." | |
245 | |
246 g++ $(gmock-config --cppflags --cxxflags) -o foo.o -c foo.cpp | |
247 g++ $(gmock-config --ldflags --libs) -o foo foo.o | |
248 | |
249 # When using a built but not installed Google Mock: | |
250 g++ $(../../my_gmock_build/scripts/gmock-config ...) ... | |
251 | |
252 Note that when building your project against Google Mock, you are building | 186 Note that when building your project against Google Mock, you are building |
253 against Google Test as well. There is no need to configure Google Test | 187 against Google Test as well. There is no need to configure Google Test |
254 separately. | 188 separately. |
255 | 189 |
256 ### Windows ### | 190 ### Windows ### |
257 The msvc/ directory contains VC++ 2005 projects for building Google | 191 The msvc/ directory contains VC++ 2005 projects for building Google |
258 Mock and selected tests. | 192 Mock and selected tests. |
259 | 193 |
260 If you want to use a version of Google Test other then the one bundled with | 194 If you want to use a version of Google Test other then the one bundled with |
261 Google Mock, change the value of the GTestDir macro in gmock_config.vsprop | 195 Google Mock, change the value of the GTestDir macro in gmock_config.vsprop |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 Normally you don't need to worry about regenerating the source files, | 253 Normally you don't need to worry about regenerating the source files, |
320 unless you need to modify them (e.g. if you are working on a patch for | 254 unless you need to modify them (e.g. if you are working on a patch for |
321 Google Mock). In that case, you should modify the corresponding .pump | 255 Google Mock). In that case, you should modify the corresponding .pump |
322 files instead and run the 'pump' script (for Pump is Useful for Meta | 256 files instead and run the 'pump' script (for Pump is Useful for Meta |
323 Programming) to regenerate them. We are still working on releasing | 257 Programming) to regenerate them. We are still working on releasing |
324 the script and its documentation. If you need it now, please email | 258 the script and its documentation. If you need it now, please email |
325 googlemock@googlegroups.com such that we know to make it happen | 259 googlemock@googlegroups.com such that we know to make it happen |
326 sooner. | 260 sooner. |
327 | 261 |
328 Happy testing! | 262 Happy testing! |
OLD | NEW |