最近一直在讀《C++程序設計實踐與技巧-測試驅動開發》一書,這不僅僅是一本講程序設計的書,更是一本使用gmock和gtest技術,秉承TDD(“測試驅動開發”)的理念的軟件開發流程的好書。讀這本書時,一定要參考隨書源代碼來讀,直接閱讀書籍總覺得感悟有點不深刻。
在此記錄下學習過程中的幾個階段:
一、 2月10號 下載隨書代碼,並搭建運行環境
1.升級cmake版本到3.16.5
更換高版本的cmake,否則有的開源代碼需要的cmake版本比較高
2.安裝gmock
隨書代碼使用的gmock版本是1.6.0,開始我使用了github上最新版的gmock源代碼,發現編譯隨書代碼有問題,
反正是學習和實驗使用,還是先採用1.6.0版本的gmock源代碼比較好。
設置GMOCK_HOME環境變量
export GMOCK_HOME=gmock源代碼路徑
mkdir my_build
cd my_build
cmake ..
make
make install
3.安裝CppUTest單元測試框架
下載源代碼,安裝
創建環境變量CPPUTEST_HOME
4.安裝libcurl
下載源代碼,安裝
5.安裝jsoncpp
下載源代碼,安裝
一切準備就緒後,還需要修改下CMakeLists.txt
target_link_libraries(test json_linux-gcc)
修改爲
target_link_libraries(test jsoncpp)
在高版本編譯器上,會報N多warning警告信息,處理如下:
修改下CMakeLists.txt,當編譯器版本大於4.2時,添加-Wno-unused-local-typedefs
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)
set(CMAKE_CXX_FLAGS "${CMAXE_CXX_FLAGS} -Wno-unused-local-typedefs")
endif()
二、 2月13號~14號 gtest官網文檔閱讀
https://github.com/google/googletest/blob/master/googletest/docs/primer.md
英語水平有限,在有道詞典的幫助下,大概過了下gtest的官方文檔
看到abseil是重度使用了gtest,還特意下載了abseil源代碼,看了好幾個小時,咦?我不是要看gtest的嗎。。。,迴歸正題
abseil的源代碼畢竟是google出品,代碼質量高,而且註釋超多,思路也清晰,抽時間要好好研讀下。
gtest學起來還是挺容易的,分爲以下幾個主題:
Basic Assertions
Binary Comparison
String Comparison
Simple Tests
Test Fixtures
Invoking the Tests
Writing the main() Function
三、 2月15號~25號 gmock官網文檔閱讀
gmock是我學的過程中比較吃力的,光官網文檔就看了好久。gmock的用法很多,先睡覺了,今天先不寫了,等待明天再寫
參考資料: