Mock對象介紹和簡易的實現

來源:互聯網
上載者:User

最近在學習TDD,在測試驅動開發的時候常常會遇到測試的模組依賴到其他模組的時候,就會使用Mock對象,所以將自己最近學習的心得拿出來分享一下,有什麼說的不對的地方,還希望大家跟我指出來!

  想必大家都知道單元測試,是一個最小的對程式正確性檢查的單位。在物件導向的開發中,往往我們是對一個方法進行測試,我們的測試目的是為了驗證這個方法是否正確,也就是說如果這個方法錯了,我希望的是一定是這個方法錯了,而不是它所依賴的方法錯了。如果整個單元測試跑下來,有10個錯誤,我們希望的是確實有10個方法錯了。所以單元測試的獨立性很重要,但是單元測試往往會依賴於其他方法,就算我們想盡一切辦法解耦,為我們所依賴的方法抽象出一個介面,雖然此時方法依賴於抽象,但是我們必須還是要提供實現,這時如果我們能自己能提供一個正確的實現,確保待測的方法所依賴的是一個穩定正確的實現,那我們就能為測試消除一個影響測試正確性的幹擾。不過這隻是使用Mock對象的情境之一。

  往往我們會在這些情境下使用Mock對象:

  1.我們所依賴的對象很不穩定。(常常發生變化,那樣我們的單元測試就變得很不穩定)

  2.依賴的對象很難被建立 (也許這個對象還沒有被其他小組的同事開發出來)

  3.依賴的對象訪問速度很慢(這裡也許依賴對象要串連遠端資料庫,速度很慢。因為大家想必都知道,單元測試還有個基本的原則就是要快速執行,這裡就明顯違背了)

  好了,前面我也提到,我們為所依賴的模組抽象出一個介面,是確實常用的辦法。但是難道我們每次都需要自己建一個類,自己去實現這個介面嗎?當然不是,有很多Mock對象架構,能幫我動態建立一個實現。這裡我將簡單的介紹一個.NET平台下的Moq架構,我的重點是模仿Moq架構的API提供一個簡易的實現,不過最重要的是給對Mock對象架構有興趣的朋友一點思路。全文閱讀

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.