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;
}

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 -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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章