本文目的
本文主要介紹gmock 1.6.0版本在Linux上如何部署和使用。
gmock是做什么的?
使用C++手動編寫mock對象將會是一件十分耗時,易於出錯,枯燥乏味的事情。gmock提供一整套mock 框架,幫助你完成這些臟活累活。
編譯gmock
1 下載:gmock官方下載
2 上傳:使用WinScp或其他工具將gmock_1.x.x.zip上傳到linux機器,該linux上的gcc版本最好在4.0以上。
3 解壓:使用命令“unzip gmock_1.x.x.zip”,解壓后會在“gmock_1.x.x.zip”同一個目錄下生成一個gmock_1.x.x目錄,使用命令“mv gmock_1.x.x gmock”將該目錄改命為gmock,設gmock目錄的路徑為GMOCK_HOME。
4 編譯:使用如下些列命令編譯
cd GMOCK_HOME/make # 跳轉到Makefile目錄
make # 編譯
ln -s gmock_main.a libgmock.a # 為gmock_main.a制作符 # 合GNU標准的軟鏈接
ll # 查看編譯結果,如下圖 |
5 驗證:注意上面的截圖,可以看見gmock_test這個文件,該文件用於測試,使用命令“./gmock_test”運行改程序,如果出現下面全部綠色的文字,說明你的gmock編譯成功,環境搭建完成。
gmock_main.a中都有些什么
編譯完gmock后嗎,主要生成了一個靜態庫gmock_main.a。該庫中包含了gmock的框架,同時,也包含了gtest框架,可以認為gtest是gmock的一個子集。在gmock_main.a中默認編譯了一個main函數,該main函數會初始化gmock和gtest,並且執行所有的TEST或TEST_F宏定義的測試用例,所以使用gmock_main.a進行單元測試時,不能編寫main函數,否則會出現多個main沖突。如果需要重寫main函數,可以使用命令“make gmock.a”,重新編譯,會生成文件gmock.a,如下圖所示
那么此時你需要自己編寫main函數和初始化gmock框架。
gtest不支持正則表達式,gmock支持
gtest框架沒有提供字符串正則表達式的api,但是gmock提供了,gmock沒有重造輪子自己寫一個正則的庫,而是封裝了<regex.h>中的相關api,在編譯gmock時,會通過宏來判斷系統中是否支持<regex.h>,如果系統不支持,那么gmock中的正則api將無法使用。下面的示例代碼描述了如何使用正則API:
同時,也可以參考gmock的官方說明文檔中的正則匹配相關部分。
使用gmock
附件中有一個工程,試用了gmock,感覺使用起來還是很方便的。看代碼比看我的描述要快,我就不多啰嗦。這里,簡單的描述如何編譯該項目
該項目編譯時使用的是gmock和gmock中自帶的gtest,在編譯過程中需要將該項目的根目錄和gmock同一個層級。然后cd到該項目中,make就可以編譯。通過“./mock_demo”運行該項目。如下圖所示:
當然,這里只是簡單的介紹了如何使用gmock,gmock還有很多使用技巧和方法大家可以自己去摸索總結。
附件:http://files.cnblogs.com/bourneli/gmock_learn.zip
相關資料
- gmock官方網站:http://code.google.com/p/googlemock/
- gmock的正則表達式:http://code.google.com/p/googlemock/wiki/CheatSheet#String_Matchers
- gmock官方wiki ::http://code.google.com/p/googlemock/w/list
- gtest官方網站:http://code.google.com/p/googletest/