gtest github:
https://github.com/google/googletest
學習:玩轉Google開源C++單元測試框架Google Test系列(gtest)(總)
一、安裝
1、gtest不是傳統的unix安裝模式(./configure; make; make install)
2、進入 ${GTEST_DIR}
g++ -isystem include -I./ -pthread -c src/gtest-all.cc
ar -rv libgtest.a gtest-all.o
(We need -pthread
as Google Test uses threads.)
官方指導:https://github.com/google/googletest/blob/master/googletest/README.md
參考:http://blog.csdn.net/macchan/article/details/17657231#
二、驗證是否成功
cd ${GTEST_DIR}/make 會發現這個文件下有個Makefile
make 會生成一些sample執行文件
選一個執行,./sample1_unittest,如果看到典型的gtest輸出log就說明成功了
三、使用示例
1、安裝與驗證完畢之后還不能直接使用
將${GTEST_DIR}/include/gtest這個目錄拷貝到/usr/local/include
將${GTEST_DIR}/libgtest.a拷貝到/usr/local/lib
這樣就可以直接使用頭文件<gtest/gtest.h>和靜態庫libgtest.a
2、創建~/test目錄,然后將${GTEST_DIR}/samples里面的sample1.cc sample1.h sample1_unittest.cc,拷貝過來。
3、寫一個Test.cc,代碼如下
#include "smaple1.h" #include <gtest/gtest.h> int main(int argc, char **argv) { testing::InitGoogleTest(&argc,argv); RUN_ALL_TESTS(): return 0; }
4、編譯過程如下
$g++ -o sample1.o -c sample1.cc
$g++ -o sample1_unittest.o -c sample1_unittest.cc
$g++ -o Test.o -c Test.cc
$g++ -o main sample1.o sample1_unittest.o Test.o -lgtest -lpthread
由於/usr/local/include被拷貝了gtest目錄 /usr/local/lib被拷貝了libgtest.a所以可以
直接使用<gtest/gtest.h>與-lgtest,另外也需要libpthread.a所以要加-lpthread
5、最后生成可執行文件main,$./main的輸出結果與上面的./sample1_unittest一樣的結果。
四、結合cmake使用gtest
參考:http://stackoverflow.com/questions/33638433/setup-google-test-in-clion
樣例:https://github.com/kaizouman/gtest-cmake-example
具體步驟:
1、在已有的工程下創建一個單元測試目錄${unit_test}
2、創建${unit_test}/gtest.cpp
#include "gtest/gtest.h" int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }
3、創建${unit_test}/test1.cpp
#include <gtest/gtest.h> TEST(FooTest, Test1) { EXPECT_EQ(1, 1); EXPECT_TRUE(3 > 0); }
4、創建${unit_test}/CMakeLists.txt
set(EXECUTABLE_OUTPUT_PATH ../build/bin) include_directories(../include) add_executable(runUnitTests gtest.cpp test1.cpp) target_link_libraries(runUnitTests gtest pthread)
編譯運行