2015年12月9日 星期三

C++單元測試(12) - fake, stub, mock object

書裡怎麼寫

《C++ API 設計》,Ch 10.4.2中有介紹

假物件(fake object)

一個具有功能性行為的物件,但採用更簡單的實作以幫助測試。
例如:在記憶體中的檔案系統,模擬與本機磁碟上的互動

存根物件(stub object)

一個物件返迴預先準備或罐頭的回應。
例如:一個ReadFileAsString()存根可能只是返回一個硬編碼的字串作為檔案內容,而不是讀取磁碟上該檔案名的檔案內容

模仿物件(mock object)

被檢測的物件具有預先程式化的行為,執行一系列方法的呼叫以做驗證。
例如:一個模仿物件(或只是模擬)可指定GetValue()函數被呼叫時前兩次返回10,之後為20。
例如:它也可以驗證函式被呼叫了只有3次或至少5次,或在類別中的函式以一特定的順序被呼叫。

自己覺得

其實,能執行測試就足夠了。XD
依書裡的定義,再簡化其詮釋方式,我自己的介紹如下

  • 假物件(fake object): 簡化物件,以記憶體為存放資料的地方。
  • 存根物件(stub object): hard code return value物件,以常數為資料。
  • 模仿物件(mock object): 程式化行為物件,以一些邏輯決定取出資料。

其實,一個物件的各種function也都可以,也都不一定是哪一種物件。不過,我自己的實作也沒有很確切的去定這是什麼物件。也許在這一點妥協,不好,但是我還沒遇到吃虧的地方,總之,先讓測試跑起來吧!

沒有留言:

張貼留言