0


Ubuntu18.04环境下Gtest框架安装测试

准备

  1. 在安装Gtest框架之前在linux上安装好cmkeg++工具。
  1. sudoapt-getinstall cmake
  2. sudoapt-getinstall g++

方法一:下载Gtest压缩包解压安装

最新版本的Gtest下载链接:https://github.com/google/googletest
可以选择自己下载解压安装,下载的安装包为.ZIP文件时,下载unzip工具进行解压。

  1. sudoapt-getinstallunzipunzip googlegtest-xxx.zip

也可以创建一个文件夹使用命令行自动打包下载,一般习惯创建一个新的文件夹作为下载目录。

  1. cd /
  2. mkdir ./workspace
  3. cd workspace
  4. git clone https://github.com/google/googletest

下载之后进入googletest文件夹,新建一个文件夹build用于存放相关make操作会生成的文件和静态库。

  1. cd googlegtest-xxx
  2. mkdir build
  3. cd build
  4. cmake ..makesudomakeinstall

安装完成之后,查看/usr/local/lib路径下是否存在libgtest.a和libgtest_main.a文件,可以手动copy。

  1. cp /workspace/googlegtest-xxx/build/lib/libgtest*.a /usr/local/lib

对安装好的gtest框架进行测试。
新建一个文件夹用于存放gtest测试源码

  1. mkdir /workspace/test_unit &&cd /workspace/build
  2. vim gtest.cpp

使用vim编辑器之前需要安装vim,

  1. sudo apt-get install vim

测试样例

  1. gtest.cpp

:

  1. #include <gtest/gtest.h>
  2. int add(int a ,int b){return a+b;}
  3. TEST(Operations,ADD){
  4. EXPECT_EQ(6,add(2,4));
  5. EXPECT_EQ(8,add(3,5));
  6. EXPECT_EQ(17,add(9,9));
  7. EXPECT_EQ(0,add(1,1));}
  8. int main(int argc,char **argv){
  9. testing::InitGoogleTest(&argc,argv);return RUN_ALL_TESTS();}

编译运行:

  1. g++ gtest.cpp -lgtest -lpthread -o gtest

运行结果:
Gtest测试结果
Gtest框架安装完成。

方法二:使用apt-get工具安装

刚刚接触Gtest时,在Ubuntu18.04环境下使用方法一安装,安装之后对Gtest框架进行测试时存在版本不兼容的问题,测试源码编译之后无法链接-lgtest和-lgtest_main库。
在这里插入图片描述
这里介绍第二种解决办法,使用apt-get工具安装。

  1. sudoapt-getinstall libgtest-dev

进入/usr/src目录下查看是否存在gtest和googlegtest文件夹,如果存在并且可以访问则进入下一步,否则可以卸载重新安装:

  1. sudo apt-get autoremove libgtest-dev

但是使用这个方法也遇到了方法一种-lgtest和-lgtest_main不兼容的问题,可以在安装命令行之后添加cmake约束。

  1. sudoapt-getinstall libgtest-dev cmake
  2. cd /usr/src/gtest
  3. sudo cmake CMakeLists.txt
  4. sudomakesudocp *.a /usr/lib

安装完成,可以按照方法一中的样例进行测试。

方法三、直接使用gtest的头文件和生成的静态库进行单元测试

新建一个文件夹,然后下载gtest源码,使用cmake和make生成gtest静态库。

  1. cd /
  2. mkdir ./workspace
  3. cd workspace
  4. git clone https://github.com/google/googletest
  5. cd googletest
  6. mkdir build
  7. cmake ..make

  1. /googletest/googletest/include/gtest

目录下是gtest的头文件,在

  1. /googletest/build/lib

目录下是gtest生成的静态库

  1. *.a

文件。

  1. /workspace

下新建文件夹

  1. test_unit

作为项目总路径。
项目文件目录

  1. |--test_unit
  2. ||| +--gtest.cpp
  3. ||| +--include
  4. | +--gtest
  5. | +--*.h
  6. ||| +--lib
  7. | +--*.a

下载后,将gtets的头文件和静态库复制到test_unit相应的路径下。

  1. cd /workspace
  2. mkdir test_unit &&cd test_unit
  3. mkdir lib
  4. mkdir include
  5. cp-rf /workspace/googletest/googletest/include/gtest ./include
  6. cp /workspace/googletest/build/lib/*.a ./lib

gtest.cpp的样例代码:

  1. #include<gtest/gtest.h>
  2. // Returns true iff n is a prime number.
  3. bool IsPrime(int n){
  4. // Trivial case1: small numbers
  5. if(n <=1)returnfalse;
  6. // Trivial case2: even numbers
  7. if(n % 2==0)return n ==2;
  8. // Now, we have that n is odd and n >=3.
  9. // Try to divide n by every odd number i, starting from 3for(int i =3;; i +=2){
  10. // We only have to try i up to the squre root of n
  11. if(i > n/i)break;
  12. // Now, we have i <= n/i < n.
  13. // If n is divisible by i, n is not prime.
  14. if(n % i ==0)returnfalse;}
  15. // n has no integer factor in the range (1, n), and thus is prime.
  16. returntrue;}
  17. class IsPrimeParamTest : public::testing::TestWithParam<int>{};
  18. TEST_P(IsPrimeParamTest, HandleTrueReturn){
  19. int n = GetParam();
  20. EXPECT_TRUE(IsPrime(n));}
  21. INSTANTIATE_TEST_CASE_P(TrueReturn, IsPrimeParamTest, testing::Values(3, 5, 11, 16 ,19 ,21 , 23, 17));

手动链接gtest的头文件和静态库:

  1. g++ gtest.cpp -I ./include/gtest -L ./lib -lgtest_main-lgtest-lpthread-o gtest

其中

  1. g++ -I

为编译程序按照

  1. -I

指定的路径去搜索头文件;

  1. g++ -L

为编译程序按照

  1. -L

指定的路进去寻找库文件。
测试结果为:
在这里插入图片描述
直接调用Gtest头文件和静态库成功。

标签: linux vim 编辑器

本文转载自: https://blog.csdn.net/wei_y0117/article/details/127922331
版权归原作者 没有上岸_ 所有, 如有侵权,请联系我们删除。

“Ubuntu18.04环境下Gtest框架安装测试”的评论:

还没有评论