gtest、cmake使用


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)

 

編譯運行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM