一、編譯和安裝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