用Cmake編譯Gtest單元測試


Google 的Gtest可以用於C/C++代碼的單元測試,通過修改gtest目錄下的Makefile文件,將提供的sample文件替換為我們自己的文件名就能夠通過make生成可執行的測試文件。如果不想逐個查找替換文件名,可以編寫CMakeList.txt文件,通過cmake進行編譯生成可執行文件。

 環境:ubuntu14.04,cmake 2.8.12.2, gtest-1.7.0

 

1)參考gtest目錄下的cmake文檔,進入到該目錄下,執行

1 cd gtest-1.7.0
2 mkdir build
3 cmake -Dgtest_build_samples=ON ..
4 make

這時,可以看到在該build目錄下會生成對應每個sample測試的可執行文件,以及兩個靜態庫libgtest.a和libgtest_main.a,libgtest.a包含了全部所需要include的文件,libgtest_main.a則是需要為測試用例提供main函數入口。

 

2)針對需要測試的單元編寫CMakeList.txt

由於需要包含gtest目錄下的文件,可以設置該目錄為環境變量如下,后面可以直接引用GTEST_ROOT:

1 GTEST_ROOT="/home/yht/gtest-1.7.0"
2 export GTEST_ROOT

將1)中生成的靜態庫libgtest.a和libgtest_main.a,復制到GTEST_ROOT/mybuild(可任意選擇存放位置和取名稱),編寫的CMakeList.txt文件如下:

 1 cmake_minimum_required(VERSION 2.6)
 2 
 3 enable_testing()
 4 find_package (Threads)
 5 include_directories($ENV{GTEST_ROOT}/include)
 6 link_directories($ENV{GTEST_ROOT}/mybuild)
 7 link_directories(/usr/local/lib)
 8 add_executable(uuid_generator uuid_generator.cpp ./unittest/uuid_generator_unittest.cpp)
 9 target_link_libraries(uuid_generator gtest gtest_main) #注意這里
10 target_link_libraries(uuid_generator ${CMAKE_THREAD_LIBS_INIT})
11 add_test(NAME uuid_generator COMMAND uuid_generator)

目錄結構為:
./
+--uuid_generator.h
+--uuid_generator.cpp
+---------unittest/
+--uuid_generator_unittest.cpp
+----------build/

 

3)在./build目錄下執行cmake ..,make就會生成可執行文件uuid_generator,運行./uuid_generator執行測試用例

 

4)參考鏈接和可能遇到的問題

https://lembra.wordpress.com/2011/10/17/building-google-test-framework-with-cmake/

http://stackoverflow.com/questions/8507723/how-to-start-working-with-gtest-and-cmake

http://stackoverflow.com/questions/5900447/simplest-example-of-using-google-c-testing-framework-with-cmake?rq=1

 


免責聲明!

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



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