由上圖可以知道mock框架可以非常容易的開發stub和mock,但是stub框架想要提高mock機制就要靠自己擴充套件了。
stub存在的意圖是為了讓測試物件可以正常的執行,其實現一般會硬編碼一些輸入和輸出,下面的**使用了ms自帶的fake和shim來實現stub。
fake實現
1shim實現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 }
1備註:微軟的fake適合介面、保護虛方法的類,shim適合其它類(封閉的、非虛的)。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 }
mock除了保證stub的功能之外,還可深入的模擬物件之間的互動方式,如:呼叫了幾次、在某種情況下是否會丟擲異常,下面的**使用了moq來實現mock。
moq實現
1備註:mock是一種功能豐富的stub。using
system;
2using
microsoft.visualstudio.testtools.unittesting;34
using
moq;
5using
tddstudy.library.whatismock;67
namespace
tddstudy.whatismock822
23private mockcreatemockdependencyservice()
2427
}28 }
我目前只使用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...