Linux下使用Google test
安裝Google test
git clone https://github.com/google/googletest.git
cd googletest
mkdir build
cmake ..
make
sudo make install
以上命令會(huì)將gtest編譯好,并將動(dòng)態(tài)鏈接庫(kù)放在/usr/local/lib
目錄下:
huangyang@ubuntu:/usr/local/lib$ ls
libgmock.a libgtest.a pkgconfig python3.5
libgmock_main.a libgtest_main.a python2.7
如上所示挡鞍,四個(gè).a文件是gtest的動(dòng)態(tài)鏈接庫(kù)违寞,在編寫(xiě)gtest的時(shí)候只需要鏈接這些文件就可以使用gtest圆存。
將頭文件放在/usr/local/include
目錄下:
huangyang@huangyang-desktop:~/Notebook$ cd /usr/local/include/
huangyang@huangyang-desktop:/usr/local/include$ ls
gmock gtest
使用gtest
-
add程序
add.cc
#include <iostream> int add(int a, int b) { return a + b; } //int main() //{ // std::cout << add(3, 10); //}
-
為add程序編寫(xiě)單元測(cè)試用例
testAdd.cc
#include <gtest/gtest.h> extern int add(int a, int b); TEST(testCase, test0) { EXPECT_EQ(add(2, 3), 5); } int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }
-
編譯和鏈接程序
huangyang@ubuntu:~/code$ g++ add.cc testAdd.cc -lgtest -lpthread huangyang@ubuntu:~/code$ ./a.out [==========] Running 1 test from 1 test case. [----------] Global test environment set-up. [----------] 1 test from testCase [ RUN ] testCase.test0 [ OK ] testCase.test0 (0 ms) [----------] 1 test from testCase (0 ms total) [----------] Global test environment tear-down [==========] 1 test from 1 test case ran. (0 ms total) [ PASSED ] 1 test.
使用
g++ add.cc testAdd.cc -lgtest -lpthread
編譯和鏈接單元測(cè)試用例玉掸。
-lgtest 是鏈接 libgtest.a庫(kù),另外也需要鏈接pthread瓤檐。
可以看到gtest單元測(cè)試用例正常的運(yùn)行起來(lái)赂韵。
-
gtest_main.a有什么用?
But maybe you think that writing all those main() functions is too much work? We agree with you completely and that's why Google Test provides a basic implementation of main(). If it fits your needs, then just link your test with gtest_main library and you are good to go.
可以不用寫(xiě)自己的main函數(shù)挠蛉,鏈接
libgtest_main.a
就可以了祭示。testAdd.cc
#include <gtest/gtest.h> extern int add(int a, int b); TEST(testCase, test0) { EXPECT_EQ(add(2, 3), 5); }
可以不寫(xiě)main函數(shù)。
編譯命令為:
g++ add.cc testAdd.cc -lgtest -lgtest_main -lpthread
將libgtest_main.a鏈接進(jìn)入程序谴古。