萌新来体验一下gmock。
编译gmock库
去https://github.com/google/googletest.git上clone下来,是一个唤作googletest的目录。因为现在gmock的代码已经整体和gtest合并了。
googletest目录下有个README.md,里面白底黑字提醒了编译器版本:
++++++++++++++++++++++++++++++++++++++++README.md
### Compilers
* gcc 5.0+
* clang 5.0+
* MSVC 2015+
我机器上gcc是4.x的,所以先升级gcc,不然有可能变异不过的。
然后编译过程是酱紫的:
# 主目录下有googlemock和googletest,今天我们是来体验mock的
cd gooletest/googlemock
# 注意在googlemock下,cmake父录
cmake ../
# 编
make
编译结果
在googletest/googlemock/lib下面生成了四个编译结果
$pwd; ls
/home/myname/googletest/googlemock/lib
libgmock.a libgmock_main.a libgtest.a libgtest_main.a
把这些库都放到他们应该在的地方,比如 /usr/lib64下面,当然也可以在/usr/lib64下创建软链接。
头文件
不要忘记了头文件,gtest和gmock的头文件分别在这里,放到/usr/include下或者创建软链接。
/home/myname/googletest/googlemock/include/gmock/
/home/myname/googletest/googletest/include/gtest/
一个例子
这里直接用了https://www.cnblogs.com/welkinwalker/archive/2011/11/29/2267225.html这个例子,编译命令:
g++ -o out *.cc -lgtest -lgmock -lpthread
一开始始终报各种undefined错误,仔细检查原来机器上之前安装了1.6.0版本的gtest,这导致当前刚编译的最新版本的gmock和机器上1.6.0版本的gtest不兼容,仔细检查/usr/lib64和/usr/include下面库和头文件是不是gtest和gmock都指向了同一个版本就可以编译成功了。
$./out
Returned Value: Hello World!
回头再来看原理。