背景
公司的项目采用gtest来进行单元测试(其实之前华为海思也是用gtest,但大厂的好处(或者也可以说坏处- dog head)就是不需要关心这些事情),需要安装gtest;
我是在docker下安装的,步骤应该是一样的;
步骤
源码下载
通过git来下载,源码安装:
git clone https://github.com/google/googletest
编译
下载后会在下载命令的目录下生成一个 googletest 的文件夹,进入后,通过cmake来编译,先后输入下面的3个命令并执行:
cd googletest
cmake3 CMakeLists.txt
make
注意:根据个人的cmake设置来进行,我安装的是cmake3,并且没有做重定向,所以是cmake3
头文件和静态库拷贝
我当前的版本,除了下载得到的 googletest 文件夹外,在 googletest 目录下还有一个 googletest ,也就是说目录结构是: googletest/googletest – 后面分别用 googletest_1 和 googletest_2 来具体指2个目录文件
通过上面的截图也可以看到,在googletest_1目录下除了googletest_2外,还有一个googlemock,这2个就是目标:gtest 和 gmock
静态库拷贝
编译后生成的静态库:gtest(libgtest.a、libgtest_main.a) 、gmock(libgmock.a、libgmock_main.a);所在目录是:
googletest_1 下的lib下:
将这些.a文件拷贝到 /usr/lib 目录下:
cp ./lib/* /usr/lib
头文件拷贝
头文件是在 googletest_2 下的include目录:
需要把include下的gtest目录全部拷贝到 /usr/include 目录下:
cp –a include/gtest /usr/include
同样的,把googletest_1下的googlemock目录里的include下的gmock全部拷贝到 /usr/include 目录下:
(需要先进入到 googletest_1的googlemock目录下)
cp –a include/gmock /usr/include
测试
可以通过下面的测试代码来测试gtest是否安装成功:
#include<gtest/gtest.h>
int add(int a,int b){
return a+b;
}
TEST(testCase,test0){
EXPECT_EQ(add(2,3),5);
}
int main(int argc,char **argv){
testing::InitGoogleTest(&argc,argv);
return RUN_ALL_TESTS();
}
编译后执行:
g++ test.cc -lgtest -lpthread
./a.out
过程及结果: