0


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

准备

在安装Gtest框架之前在linux上安装好cmke、g++工具。
sudoapt-getinstall cmake
sudoapt-getinstall g++

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

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

sudoapt-getinstallunzipunzip googlegtest-xxx.zip

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

cd /
mkdir ./workspace
cd workspace
git clone https://github.com/google/googletest

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

cd googlegtest-xxx
mkdir build
cd build
cmake ..makesudomakeinstall

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

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

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

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

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

sudo apt-get install vim

测试样例

gtest.cpp

:

#include <gtest/gtest.h>

int add(int a ,int b){return a+b;}

TEST(Operations,ADD){
    EXPECT_EQ(6,add(2,4));
    EXPECT_EQ(8,add(3,5));
    EXPECT_EQ(17,add(9,9));
    EXPECT_EQ(0,add(1,1));}

int main(int argc,char **argv){
  testing::InitGoogleTest(&argc,argv);return RUN_ALL_TESTS();}

编译运行:

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

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

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

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

sudoapt-getinstall libgtest-dev

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

sudo apt-get autoremove libgtest-dev

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

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

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

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

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

cd /
mkdir ./workspace
cd workspace
git clone https://github.com/google/googletest
cd googletest
mkdir build
cmake ..make

/googletest/googletest/include/gtest

目录下是gtest的头文件,在

/googletest/build/lib

目录下是gtest生成的静态库

*.a

文件。

/workspace

下新建文件夹

test_unit

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

|--test_unit
|||  +--gtest.cpp
|||  +--include
|    +--gtest
|        +--*.h
|||  +--lib
|    +--*.a

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

cd /workspace
mkdir test_unit &&cd test_unit
mkdir lib
mkdir include
cp-rf /workspace/googletest/googletest/include/gtest ./include
cp /workspace/googletest/build/lib/*.a ./lib

gtest.cpp的样例代码:

#include<gtest/gtest.h>
// Returns true iff n is a prime number.
bool IsPrime(int n){
    // Trivial case1: small numbers
    if(n <=1)returnfalse;

    // Trivial case2: even numbers
    if(n % 2==0)return n ==2;

    // Now, we have that n is odd and n >=3.

    // Try to divide n by every odd number i, starting from 3for(int i =3;; i +=2){
        // We only have to try i up to the squre root of n
        if(i > n/i)break;

        // Now, we have i <= n/i < n.
        // If n is divisible by i, n is not prime.
        if(n % i ==0)returnfalse;}
    // n has no integer factor in the range (1, n), and thus is prime.
    returntrue;}

class IsPrimeParamTest : public::testing::TestWithParam<int>{};

TEST_P(IsPrimeParamTest, HandleTrueReturn){
    int n =  GetParam();
    EXPECT_TRUE(IsPrime(n));}

INSTANTIATE_TEST_CASE_P(TrueReturn, IsPrimeParamTest, testing::Values(3, 5, 11, 16 ,19 ,21 , 23, 17));

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

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

其中

g++ -I

为编译程序按照

-I

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

g++ -L

为编译程序按照

-L

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

标签: linux vim 编辑器

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

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

还没有评论