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/42240885,https://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