You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: README.md
+16-11
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ C Mock - Google Mock Extension
6
6
Overview
7
7
--------
8
8
9
-
C Mock is [Google Mock][1]'s extension allowing a function mocking.
9
+
C Mock is [Google Mock][1]'s extension allowing a function mocking. Only global (non-static) functions mocking is supported.
10
10
11
11
This is neither a patch to nor fork of Google Mock. This is just a set of headers providing a way to use tools for mock methods with mock functions in tests.
12
12
@@ -159,7 +159,7 @@ foo(1, 2); // calling the real function
159
159
160
160
C Mock uses specific GNU/Linux features internally and a test build requires a few additional steps.
161
161
162
-
Firstly, all functions you want to mock must be compiled into a dynamic library. If it includes your project-specific functions you must put them into a dynamic library as well. In such circumstances, it seems reasonable to build all code under test as a dynamic library. Selecting only those parts that you are going to mock might be tedious and cumbersome.
162
+
Firstly, all functions you want to mock must be compiled into a dynamic library. If it includes your project-specific functions you must put them into a dynamic library as well.
163
163
164
164
Secondly, you must pass the following options to a linker when building a test executable:
165
165
@@ -183,24 +183,27 @@ to get the compilations and linker options, respectively.
183
183
184
184
Since [it is not recommended to install a pre-compiled version of Google Test][4] many distributions don't provide pre-compiled Google Test anymore. You need to download and compile Google Test manually as described in [Google Test][1]. The optional second command argument is a path to a directory containing downloaded and built Google Test.
185
185
186
-
Suppose you have `foo.c` and `bar.c` files containing a code under a test and a `foobar_test.cc` file containing the tests. To build your test executable:
186
+
Suppose you have `foo.c` and `bar.c` files containing a code to test, a `spam.c` file containing project functions to mock, and a `foobar_test.cc` file containing the tests. To build your test executable:
187
187
188
-
1. Compile a code under test.
188
+
1. Compile the code to test.
189
189
190
190
```sh
191
-
cc -c -fPIC foo.c -o foo.o
192
-
cc -c -fPIC bar.c -o bar.o
191
+
cc -c foo.c -o foo.o
192
+
cc -c bar.c -o bar.o
193
193
```
194
194
195
195
Note that C-Mock does not require a code under test to be compiled with a C++ compiler. In the example above, a code under a test is compiled with a C compiler and the tests themselves are compiled with a C++ compiler.
196
196
197
-
2. Build a shared library containing a code under test.
197
+
2. Build a shared library containing project functions to mock.
198
198
199
199
```sh
200
-
cc -shared -Wl,-soname,$(pwd)/libfoobar.so -o libfoobar.so foo.o bar.o
200
+
cc -c -fPIC spam.c -o spam.o
201
+
cc -shared -Wl,-soname,$(pwd)/libspam.so -o libspam.so spam.o
201
202
```
202
203
203
-
When building code under test as a dynamic library it is handy to specify *soname* as an absolute pathname. Then when the test executable is run no additional environment setup is required for the dynamic linking loader to locate your library (i.e. setting `LD_LIBRARY_PATH`).
204
+
In general, this step is optional if the functions to mock are already provided by a dynamic library (i.e. third-party library).
205
+
206
+
When building a dynamic library it is handy to specify *soname* as an absolute pathname. Then when the test executable is run no additional environment setup is required for the dynamic linking loader to locate your library (i.e. setting `LD_LIBRARY_PATH`).
204
207
205
208
3. Compile the tests.
206
209
@@ -209,11 +212,13 @@ Suppose you have `foo.c` and `bar.c` files containing a code under a test and a
209
212
```
210
213
211
214
4. Build a test executable.
212
-
215
+
213
216
```sh
214
-
g++ `cmock-config --libs` -pthread -lfoobar foobar_test.o -o foobar_test # Google Test requires -pthread
0 commit comments