私底下接觸到很多童鞋在問關於mock測試的問題,今天就來一篇掃盲文。
在單元測試和介面測試過程中通常需要用到mock測試,那麼什麼是mock測試呢?
mock 一詞的英文翻譯有模擬、虛擬的意思,所以mock測試可以理解為模擬測試。
mock模擬的物件是在測試過程那些不容易構造和獲取的方法、類、物件、介面或者服務等,從而建立乙個mock物件來模擬替代真實物件,通常發生在低耦合服務架構,存在多個服務呼叫或遠端服務呼叫過程的測試場景中。
如果對上面mock模擬的物件不好理解的話,我們上圖來理解為什麼需要mock測試,下圖a、b、c、d、e可以代表的是函式方法、類、api介面、服務等,這樣乙個服務呼叫鏈:
當我們需要測試a的時候,如果不使用 mock測試,則我們需要把整個依賴樹都構建出來,而使用 mock 測試的話就可以將結構分解開,我們只需要模擬出於a有直接關聯的b和c即可,像下圖這樣:
這樣做的好處不言自明:解耦了整個測試鏈路,大大簡化了單個服務的測試過程,降低了測試難度。
前面說了為什麼需要mock測試,這裡就具體化哪些場景或者哪些情況下需要mock測試,有寫過單元測試的童鞋應該對mock測試都不會陌生,還有就是介面測試過程中的多重依賴,總結一下就有下面這些方向:
模擬異常測試,通過mock來模擬難以復現的測試場景,比如錯誤碼測試,通過mock來模擬出各種服務異常;目前市面上已經有很多成熟的框架和工具可以用來輔助mock測試,比如單元測試和介面自動化測試中可以使用的mock測試框架有:easymock 和 mockito。團隊並行開發/測試期,通過mock依賴的服務,只關注自己的服務和物件來保證進度;
tdd模式,即測試驅動開發,單元測試/介面測試中測試物件依賴其他物件,這些物件的構造複雜、耗時或者根本無法構造(未交付),通過mock可讓測試提前介入;
隔離系統,防止資料汙染,比如mock乙個資料庫增刪改的介面;
關鍵系統演示,只關注ui,但為了保證流程的通暢,需要mock來解決後端。
介面化的mock測試工具:fiddler和postman。
具體應用留到後面篇章來說。
mock中測試private方法,不是mock
method method powermockito.method categorycontroller.class,getcategory list.class 建立呼叫categorycontroller類中的getcategory私有方法的method物件,引數是list物件 listcate...
什麼是框架?
框架是乙個應用程式的半成品。框架提供了可在應用程式之間共享的可覆用的公共結構。開發者把框架融入他們自己的應用程式,並加以擴充套件,以滿足他們特定的需要。框架和工具包的不同之處在於,框架提供了一致的結構,而不僅僅是一組工具類。框架其實就是一組元件,供你選用完成你自己的系統。簡單說就是使用別人搭好的舞台...
什麼是框架
框架 framework 是乙個框子 指其約束性,也是乙個架子 指其支撐性。it語境中的框架,特指為解決乙個開放性問題而設計的具有一定約束性的支撐結構。在此結構上可以根據具體問題擴充套件 安插更多的組成部分,從而更迅速和方便地構建完整的解決問題的方案。1 框架本身一般不完整到可以解決特定問題 2 框...