gtest

gtest下載與安裝    

https://github.com/google/googletest

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

  以上命令會將gtest編譯好,並將靜態鏈接庫放在/usr/local/lib 目錄下:
    zhouhao@ubuntu:/usr/local/lib$ ls
    libgmock.a       libgtest.a       pkgconfig  python3.6
    libgmock_main.a  libgtest_main.a  python2.7

    如上所示,四個.a文件是gtest的動態鏈接庫,在編寫gtest的時候只需要鏈接這些文件就可以使用gtest。
(注:若需要生成.so的動態庫,參考https://blog.csdn.net/pbe_sedm/article/details/42240885https://www.cnblogs.com/ziyunlong/p/6023121.html)
    將頭文件放在/usr/local/include目錄下:

sudo cp libgtest*.a  /usr/local/lib 
sudo cp –a include/gtest /usr/local/include

    zhouhao@ubuntu-desktop:~$ cd /usr/local/include/
    zhouhao@ubuntu-desktop:/usr/local/include$ ls
    gmock  gtest

檢查是否安裝成功

  可以寫一個簡單的測試代碼如下:

#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 -lgtest -lpthread
./a.out

TEST CASE編寫
    可以不寫main函數。
    編譯命令爲:
    g++ add.cc testAdd.cc -lgtest -lgtest_main -lpthread
    即將libgtest_main.a鏈接進入程序。

 

附件:常用語句

斷言:
ASSERT_TRUE(condition); EXPECT_TRUE(condition); condition爲真
ASSERT_FALSE(condition);    EXPECT_FALSE(condition);    condition爲假

ASSERT_EQ(expected, actual);    EXPECT_EQ(expected, actual);    expected == actual
ASSERT_NE(val1, val2);  EXPECT_NE(val1, val2);  val1 != val2
ASSERT_LT(val1, val2);  EXPECT_LT(val1, val2);  val1 < val2
ASSERT_LE(val1, val2);  EXPECT_LE(val1, val2);  val1 <= val2
ASSERT_GT(val1, val2);  EXPECT_GT(val1, val2);  val1 > val2
ASSERT_GE(val1, val2);  EXPECT_GE(val1, val2);  val1 >= val2

ASSERT_STREQ(expected_str, actual_str); EXPECT_STREQ(expected_str, actual_str); 兩個C字符串有相同的內容
ASSERT_STRNE(str1, str2);   EXPECT_STRNE(str1, str2); 兩個C字符串有不同的內容
ASSERT_STRCASEEQ(expected_str, actual_str); EXPECT_STRCASEEQ(expected_str, actual_str); 兩個C字符串有相同的內容,忽略大小寫
ASSERT_STRCASENE(str1, str2);   EXPECT_STRCASENE(str1, str2);   兩個C字符串有不同的內容,忽略大小寫

頭文件:
#include <gtest/gtest.h>

int main(mai nint argc, char **argv) 
{
  printf("Running main() from gtest_main.cc\n");
  testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

庫:
    -lgtest

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