就在昨天終于做了gtest的分享,我的預(yù)研工作終于結(jié)束了,感覺離我辭職的日子不遠(yuǎn)了,畢竟是專注java二百年啊,要告別實習(xí)啦。。
這篇是GoogleMock的簡介文檔,會在后邊附帶一個自己的例子。
一、什么是Google C ++ Mocking Framework?
當(dāng)你寫一個原型或測試,往往不能完全的依賴真實對象。一個mock對象實現(xiàn)與一個真實對象相同的接口,但讓你在運行時指定它時,如何使用?它應(yīng)該做什么?(哪些方法將被稱為?什么順序?多少次?有什么參數(shù)?他們會返回什么?等)
注意:很容易混淆偽造對象和模擬對象。fakes和mock在測試驅(qū)動開發(fā)(TDD)社區(qū)中實際上意味著非常不同的東西:
Fake(偽對象)有工作實現(xiàn),但通常采取一些捷徑(可能使操作更便宜),這使得它們不適合生產(chǎn)。內(nèi)存中的文件系統(tǒng)將是一個fake的例子。
Mock(模擬器)是預(yù)期編程的對象,它們形成它們期望接收的調(diào)用的規(guī)范。
如果所有這些對你來說太抽象了,不要擔(dān)心 - 最重要的事情要記住是一個模擬允許你檢查它自己和調(diào)用者之間的交互。一旦你開始使用mock,fake和mock之間的差異將變得更加清晰。
Google C ++ Mocking框架(或簡稱為Google Mock)是一個庫(有時我們稱之為“框架”,以使其聲音很酷)用于創(chuàng)建模擬類和使用它們。 它之對于對C ++,就像jMock和EasyMock對于Java。
使用Google Mock涉及三個基本步驟:
使用一些簡單的宏描述你想要模擬的接口,他們將擴展到你的mock類的實現(xiàn);
創(chuàng)建一些模擬對象,并使用直觀的語法指定其期望和行為;
練習(xí)使用模擬對象的代碼。 Google Mock會在出現(xiàn)任何違反期望的情況時立即處理。
二、為什么選擇Google Mock?
雖然模擬對象可以幫助你刪除測試中不必要的依賴,并使它們快速可靠,在C ++中手動使用mock是很難的:
有人必須實現(xiàn)Mock。這個工作通常很乏味,容易出錯。難怪人們走很遠(yuǎn)的距離,避免它。
這些手動寫的Mock的質(zhì)量有點,呃,不可預(yù)測。你可能會看到一些真正拋光的,但你也可能看到一些被匆忙的入侵,并有各種各樣的臨時限制。
<