gtest的安装和使用

一、编译和安装gtest

1.下载gtest

$git clone https://github.com/google/googletest.git

2.安装前准备

有两种编译安装方式,这里我用cmake编译。

(1)blade依赖scons,先安装scons

yum install scons

我这里yum安装失败,所以下载scons-3.1.1.tar.gz,解压编译安装

$wget http://prdownloads.sourceforge.net/scons/scons-3.1.1.tar.gz
$tar -zxvf scons-3.1.1.tar.gz
$cd scons-3.1.1
$python setup.py install --prefix=/opt/scons

安装成功后,添加到环境变量/etc/profile,source /etc/profile

export PATH="$PATH:/home/work/install/scons-3.1.1/bin"

(2)安装cmake

$yum install cmake
$yum install make

3.编译gtest

$cd googletest
$mkdir build
$cd build
$cmake ..		//根据CMakelist.txt,gtest和gmock都会编译和安装
$sudo make && make install		
//gtest.h默认在/usr/local/include/gtest/gtest.h
//libgtest.a默认在/usr/local/lib64/libgtest.a

linux默认是在/lib和/usr/lib下查找动态链接库,gtest默认生成库的位置不能查找到,有以下方法解决:

(1)修改/etc/ld.so.conf,添加/usr/local/lib64,执行ldconfig

(2)export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH,并且LD_LIBRARY_PATH优先于默认搜索路径

(3)拷贝库到/usr/lib下

二、使用gtest

Demo1:

#include<gtest/gtest.h>
int Add(int a, int b){
    return a + b;
}

int Minus(int a, int b){
    return a - b;
}

TEST(Operations, Add){
    EXPECT_EQ(Add(2,3),5);
}

TEST(Operations, Minus){
    EXPECT_EQ(Minus(4,2),2);
}

int main(int argc,char **argv){
  testing::InitGoogleTest(&argc,argv);
  return RUN_ALL_TESTS();
}
$g++ test.cc -o test -lgtest -lpthread
$./test

Demo2:

class QueueTest : public ::testing::Test {
 protected:
  void SetUp() override {
     q1_.Enqueue(1);
     q2_.Enqueue(2);
     q2_.Enqueue(3);
  }

  // void TearDown() override {}

  Queue<int> q0_;
  Queue<int> q1_;
  Queue<int> q2_;
};
TEST_F(QueueTest, IsEmptyInitially) {
  EXPECT_EQ(q0_.size(), 0);
}

TEST_F(QueueTest, DequeueWorks) {
  int* n = q0_.Dequeue();
  EXPECT_EQ(n, nullptr);

  n = q1_.Dequeue();
  ASSERT_NE(n, nullptr);
  EXPECT_EQ(*n, 1);
  EXPECT_EQ(q1_.size(), 0);
  delete n;

  n = q2_.Dequeue();
  ASSERT_NE(n, nullptr);
  EXPECT_EQ(*n, 2);
  EXPECT_EQ(q2_.size(), 1);
  delete n;
}

References:
[1] https://scons.org/doc/2.5.1/HTML/scons-user.html#chap-build-install
[2] https://www.cnblogs.com/helloworldcode/p/9606838.html
[3] https://github.com/google/googletest/blob/master/googletest/docs/primer.md

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值