TDD 什麼是樁(stub)和模擬(mock)?

2021-09-06 13:54:56 字數 1645 閱讀 5717

由上圖可以知道mock框架可以非常容易的開發stub和mock,但是stub框架想要提高mock機制就要靠自己擴充套件了。

stub存在的意圖是為了讓測試物件可以正常的執行,其實現一般會硬編碼一些輸入和輸出,下面的**使用了ms自帶的fake和shim來實現stub。

fake實現

1

using

system;

2using

microsoft.visualstudio.testtools.unittesting;34

using

tddstudy.library.whatisstub;

5using

tddstudy.library.whatisstub.fakes;67

namespace

tddstudy.whatisstub818

19private

idependencyservice createstubdependencyservice()

2024

};25}26

}27 }

shim實現

1

using

system;

2using

microsoft.visualstudio.testtools.unittesting;

3using

microsoft.qualitytools.testing.fakes;45

using

tddstudy.library.whatisshim;

6using

tddstudy.library.whatisshim.fakes;78

namespace

tddstudy.whatisshim921

}2223private

dependencyservice createshimdependencyservice()

2428

};29}30

}31 }

備註:微軟的fake適合介面、保護虛方法的類,shim適合其它類(封閉的、非虛的)。

mock除了保證stub的功能之外,還可深入的模擬物件之間的互動方式,如:呼叫了幾次、在某種情況下是否會丟擲異常,下面的**使用了moq來實現mock。

moq實現

1

using

system;

2using

microsoft.visualstudio.testtools.unittesting;34

using

moq;

5using

tddstudy.library.whatismock;67

namespace

tddstudy.whatismock822

23private mockcreatemockdependencyservice()

2427

}28 }

備註:mock是一種功能豐富的stub。

我目前只使用ms的fake,感覺夠了。

什麼是測試驅動開發?(TDD)

一 什麼是tdd 簡單的說,即在寫任何功能 之前,先寫它的測試 具體步驟 根據需要編寫乙個測試用例 編寫功能 以讓剛才的測試用例通過 逐步補充測試用例 修改功能 使新增的測試用例和原來的都通過 重構,包括功能 和測試用例 二 為什麼使用tdd 提高 質量。由於功能 的高質量和完善的測試用例集,增強了...

stub 和 mock 有什麼區別

在網上看到以下的描述就 stub vs mock 進行比較 在測試中,經常涉及到對依賴 的處理,這將涉及到系統的結構的設計。乙個好的設計,必然是容易測試的。之間的依賴被極大的隔離開來,很容易的進行測 試。如何對對其他層具有依賴的 進行測試呢?可以有兩種方法 引入stub和引入mock。那麼這兩者之間...

什麼是 PM,什麼是 SCM,和 NVM 什麼關係

自 近幾年,不論在學術界還是工業界,nvm 都是比較前沿的技術。其實 nvm 一詞並不新,是因為 pm 或稱 scm 這個與 nvm 有關的概念的出現,使得 nvm 這詞又 火 了一把。在近年的相關文獻中,nvm 也經常被和 pm scm 混用,讓人搞不清。本文捋一捋它們之間的關係。準確來說,nvm...