gtest是google提供的一个非常强大的单元测试工具;
1.下载gtest
下载地址:https://code.google.com/p/googletesthttps://code.google.com/p/googletest/或者在centos7上直接git(推荐)
git clone https://github.com/google/googletest.git
或自己上github下载一个
//github地址
git clone https://github.com/google/googletest
2.(解压后)进入下载文件目录查看
cd googletest //进入下载的目录
ls //查看
Gtest共有两个测试框架:
gmock框架:gmock主要是用来mock待测试模块依赖的一些对象,帮助你在测试中去除不必要的依赖,类似与java的jMock和EasyMock。
gtest测试框架:类似于java里面的junit,用来做单元测试的
3.为防止编译后污染原代码,新建文件夹来编译(可以省略不建)
mkdir build //建立编译文件夹
cd build //进入新文件夹编译
4. cmake编译
如果是直接在googletest里编译就用 cmake ,在新建文件夹里编译用 cmake ../
这时候编译的文件夹里就会出现Makefile脚本了
注意:新版本的gtest要求的最低cmake版本是否满足,不满足需要先安装高版本cmake,一般要求cmake3以上;编译安装后用cmake --version发现还是显示之前的版本cmake的话,命令 cd /usr/bin 进入/usr/bin里,找到高版本的cmake(如:cmake3) 用 命令 cp -rf cmake3 cmake复制并重命名来覆盖掉旧版本的cmake脚本,再查询cmake --version就可以显示高版本来正常使用了(卸载旧版本用sudo yum remove cmake)。
5.make编译
make进行编译cmake编译出来的Makefile脚本,编译达到100%——编译完成
检查是否有lib里 *.a编译成功
6.手动拷贝lib和include (和第7步一样,两者只需要完成其一即可)
如果有root权限,则
sudo cp libgtest*.a /usr/lib //拷贝生成的lib的库文件到服务器的lib里
sudo cp –a include/gtest /usr/include //拷贝gtest的include到服务器include里
sudo cp –a include/gmock /usr/include //拷贝gmock的include到服务器include里
这里是手动安装到/usr/include和/usr/lib里 ,所有用户都能使用;
7.安装gmock和gtest到系统(完成6的话可以跳过)
sudo make install
查看是否安装成功:在生成Makefile的文件夹里,终端输入上面的命令安装gmock和gtest,进入四个libgtest*.a文件生成的目录检查,是否已经被复制过来;如果存在说明gtest和gmock模块安装成功;
如图,则gmock的include文件被复制到 /usr/local/include/gmock里,gtest的include文件被复制到 /usr/local/include/gtest里,gmock和gtest的lib文件被复制到 /usr/local/lib64里,安装成功;
这里是自动安装到/usr/local/include和/usr/local/lib4里,当然安装到这里的/usr/local/lib里也可以,当前用户使用;
8.执行谷歌自带测试用例
源安装包自带的测试用例存放在下载的gtest文件的/googletest/googletest/samples里
命令及运行状况如下图:
g++ ../src/gtest_main.cc sample1.cc sample1_unittest.cc -o test -lgtest -lgmock -lpthread
其中 ../src/gtest_main.cc sample1.cc 为测试主程序入口,sample1.cc:待测目标源码,就是测试对象即进行白盒测试的对象;sample1_unittest.cc:测试用例,里面就是我们针对源码写的测试用例脚本,一般为后端开发人员书写;
备注: 编译时要测试主程序(可自定义)、源码(测试目标)、测试用例一起编译,其中-lgmock可以不写入命令,调用gmock的目的是为了减少依赖;