就在昨天終于做了gtest的分享,我的預(yù)研工作終于結(jié)束了,感覺(jué)離我辭職的日子不遠(yuǎn)了,畢竟是專注java二百年啊,要告別實(shí)習(xí)啦。。

這篇是GoogleMock的簡(jiǎn)介文檔,會(huì)在后邊附帶一個(gè)自己的例子。

一、什么是Google C ++ Mocking Framework?

   當(dāng)你寫一個(gè)原型或測(cè)試,往往不能完全的依賴真實(shí)對(duì)象。一個(gè)mock對(duì)象實(shí)現(xiàn)與一個(gè)真實(shí)對(duì)象相同的接口,但讓你在運(yùn)行時(shí)指定它時(shí),如何使用?它應(yīng)該做什么?(哪些方法將被稱為?什么順序?多少次?有什么參數(shù)?他們會(huì)返回什么?等)

注意:很容易混淆偽造對(duì)象和模擬對(duì)象。fakes和mock在測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(TDD)社區(qū)中實(shí)際上意味著非常不同的東西:

  • Fake(偽對(duì)象)有工作實(shí)現(xiàn),但通常采取一些捷徑(可能使操作更便宜),這使得它們不適合生產(chǎn)。內(nèi)存中的文件系統(tǒng)將是一個(gè)fake的例子。

  • Mock(模擬器)是預(yù)期編程的對(duì)象,它們形成它們期望接收的調(diào)用的規(guī)范。

如果所有這些對(duì)你來(lái)說(shuō)太抽象了,不要擔(dān)心 - 最重要的事情要記住是一個(gè)模擬允許你檢查它自己和調(diào)用者之間的交互。一旦你開(kāi)始使用mock,fake和mock之間的差異將變得更加清晰。

Google C ++ Mocking框架(或簡(jiǎn)稱為Google Mock)是一個(gè)庫(kù)(有時(shí)我們稱之為“框架”,以使其聲音很酷)用于創(chuàng)建模擬類和使用它們。 它之對(duì)于對(duì)C ++,就像jMock和EasyMock對(duì)于Java。

使用Google Mock涉及三個(gè)基本步驟:

  1. 使用一些簡(jiǎn)單的宏描述你想要模擬的接口,他們將擴(kuò)展到你的mock類的實(shí)現(xiàn);

  2. 創(chuàng)建一些模擬對(duì)象,并使用直觀的語(yǔ)法指定其期望和行為;

  3. 練習(xí)使用模擬對(duì)象的代碼。 Google Mock會(huì)在出現(xiàn)任何違反期望的情況時(shí)立即處理。

二、為什么選擇Google Mock?

  雖然模擬對(duì)象可以幫助你刪除測(cè)試中不必要的依賴,并使它們快速可靠,在C ++中手動(dòng)使用mock是很難的: