日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《Unit Testing》2.1 伦敦学派如何做隔离

發布時間:2023/12/4 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Unit Testing》2.1 伦敦学派如何做隔离 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

針對單元測試的定義,主要有兩種看法:

  • 經典學派。經典學派之所以經典,是因為這原本就是人們做單元測試和測試驅動開發的方式

  • 倫敦學派。倫敦學派扎根于倫敦的編程社區。

?

單元測試的定義

單元測試有很多定義,但是所有的定義都有三個重要的屬性。單元測試是一個自動化測試,并且:

  • 驗證一小段代碼(或者叫一個單元)

  • 執行速度快

  • 使用隔離的方式進行

?

而隔離的方式是經典學派和倫敦學派的根本區別所在。(我個人使用經典的方式)

?

隔離問題,倫敦學派的做法

以隔離的方式驗證一段代碼(一個單元)意味著什么?

倫敦學派把它描述成將被測試系統(SUTSystem Under Test與它的協作者隔離開來。也就是說,如果一個 class 有依賴項或依賴其它的class,需要把這些依賴項都使用測試替身(test double來替換掉。

測試替身(test double是一個外觀和行為都與其對應的正式版本類似的對象,但它是一個簡化版,它降低了復雜性并有助于測試。

?

使用測試替身替換依賴項,如下圖:

這樣做的好處有:

  • 如果測試失敗,出問題的代碼肯定是 SUT(被測試系統)。其它地方不會出現嫌疑,因為其鄰居都被測試替身替換掉了。

  • 它能夠拆分對象圖,也就是溝通的類之間組成的網絡。你可以把被測試類的直接依賴項替換掉,這樣就不需要再處理依賴項的依賴項了,從而大大減少單元測試的準備工作。

  • 還有一個小的優點,它允許你引入項目范圍內的指南:一次只測試一個類。這樣的話就無需考慮代碼覆蓋率的問題了,因為如果建立一個類,那么就創建它對應的一個測試類。如下圖:

??

如何創建測試替身?

首先看經典學派如何做單元測試:

這里面 Customer 是被測試系統 SUT,而 Store 是它的協作者。

在經典學派里,不使用測試替身替代依賴項

?

針對同一個類,倫敦學派是這樣做單元測試的:

這里我使用了Moqhttps://github.com/moq/moq4)框架。

具體的說,我是用mock 這種東西替代了 Store。(而 mock 是測試替身的一種,現在知道這么多就行)。

這里面 Mock<IStore> 就是 Store 的簡化版:

  • 在傳入特定參數時,HasEnoughInventory 方法會被指定返回 true false

  • 此外,也可以得到?RemoveInventory 被調用的次數,并將其用于驗證。

總結

以上是生活随笔為你收集整理的《Unit Testing》2.1 伦敦学派如何做隔离的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。