*以下內容為本人的學習筆記,如需要轉載,請宣告原文連結 微信公眾號「ENG八戒」https://mp.weixin.qq.com/s/aFeiOGO-N9O7Ab_8KJ2wxw
開發者雖然主要負責工程裡的開發任務,但是每個開發完畢的功能都是需要開發者自測通過的,所以經常會聽到開發者提起單元測試的話題。那麼今天我就帶大夥一起來看看大名鼎鼎的谷歌 C++ 測試框架 GoogleTest.
本文上接《C++ 測試框架 GoogleTest 初學者入門篇 甲》,歡迎關注微信公眾號【ENG八戒】檢視更多精彩內容。
按照上圖修改儲存,然後輸入和上面一樣的編譯指令即可。
編譯成功後,在目錄 .\build\bin\Debug 下面多了很多生成檔案,但是我們只要這兩個動態庫檔案
gtest.dll
gtest_main.dll
另外,和編譯靜態庫檔案一樣,在目錄 .\build\lib\Debug 下生成的這兩個靜態庫檔案也是需要的,用於連結目標 exe 檔案。
gtest.dll
gtest_main.dll
新建一個測試工程 TEST,呼叫 googletest 庫分為靜態呼叫和動態呼叫,分別對應上一節的兩種輸出檔案,現在就分開來演示一下怎麼設定目標測試工程。
TEST 工程只有一個原始碼檔案 main.cpp
呼叫靜態偵錯庫
首先,需要找到 googletest 的原始碼目錄下的 .\googletest\include\gtest
把整個資料夾拷貝到目標測試工程 TEST 目錄下,然後把 gtest 編譯輸出的靜態庫檔案(.lib)也拷貝到目標測試工程 TEST 的 .\gtest\lib 目錄下
然後看一下 CMakeLists.txt 可以這樣寫
cmake_minimum_required(VERSION 2.14)
project(runTests)
# Locate GTest
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
message("CMAKE_CURRENT_SOURCE_DIR:" ${CMAKE_CURRENT_SOURCE_DIR})
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/gtest/lib)
# for window static debug
set(CMAKE_CXX_FLAGS_DEBUG "/MTd")
# for window dynamic debug
# set(CMAKE_CXX_FLAGS_DEBUG "/MDd")
# for window dynamic release
# set(CMAKE_CXX_FLAGS_DEBUG "/MD")
# for window static release
# set(CMAKE_CXX_FLAGS_DEBUG "/MT")
# Link runTests with what we want to test and the GTest and pthread library
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME}
gtest
gtest_main)
Cmake 工程的編譯方法都是一樣的,照搬上面提到的編譯指令即可,這裡略過
呼叫動態偵錯庫
設定過程,和呼叫靜態偵錯庫是差不多的,但是在把 gtest 編譯輸出的靜態庫檔案(.lib)拷貝到目標測試工程 TEST 的 .\gtest\lib 目錄下時,也需要把 gtest 編譯輸出的動態庫檔案(.dll)一起拷貝到目標測試工程 TEST 的 .\gtest\lib 目錄下,這樣的目的是為了在測試工程 TEST 編譯的過程中,方便部署可執行檔案(.exe)的執行環境,也就是 exe 檔案依賴的 googletest 庫檔案。
然後看一下 CMakeLists.txt 可以這樣寫
# for default window dynamic debug
cmake_minimum_required(VERSION 2.14)
project(runTests)
set(DESTINATION_DIR ${PROJECT_BINARY_DIR}/Debug)
execute_process( COMMAND ${CMAKE_COMMAND} -E make_directory ${DESTINATION_DIR})
execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/gtest/lib/gtest_main.dll ${DESTINATION_DIR})
execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/gtest/lib/gtest.dll ${DESTINATION_DIR})
# Locate GTest
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
message("CMAKE_CURRENT_SOURCE_DIR:" ${CMAKE_CURRENT_SOURCE_DIR})
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/gtest/lib)
# Link runTests with what we want to test and the GTest and pthread library
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME}
gtest
gtest_main)
在 cmake 執行過程中,會把 exe 檔案依賴的 googletest 庫檔案(.dll)拷貝到即將生成的 exe 檔案的存放位置。
由於篇幅受限,本系列教學還未完結,下一篇《C++ 測試框架 GoogleTest 初學者入門篇 丙》將在本公眾號稍後推播,如果你想看了解更多精彩內容,歡迎關注我的微信公眾號 【ENG八戒】
學習可以等,時間不等人!
關注我,帶你學習程式設計領域更多核心技能!