單元測試 破除依賴

2022-01-16 06:01:35 字數 875 閱讀 1241

要測試的物件依賴另乙個你無法控制(或者還未實現)的物件。這個物件可能是web服務、系統時間、執行緒除錯、介面或者其他。

重要的問題是:你的測試**不能控制這個依賴的物件向你的**返回什麼值,也不能控制它的行為(例如想模擬乙個異常)。

何以解憂,唯有存根或者模擬物件

乙個存根是對系統中存在的乙個依賴項(或者協作者)的可控制的替代物。通過使用存根,你在測試**時無需直接處理這個依賴項。

模擬物件是系統中的偽物件,它可以驗證被測試物件是否按預期的方式呼叫了這個偽物件,因此通過或者是失敗。通常每個測試最多有乙個模擬物件

它們二者其他都是偽物件。二者最根本的區別是存根不會導致測試失敗,而模擬物件可以。即存根不參與斷言,而模擬物件參與斷言。

竟然還想著手工實現。。。。但是還是簡單說一下原理,如果有想深入了解,可以參見《單元測試的藝術》

目前也在找比較適合的框架。所說easymock太過時了,還要使用powermock。jmockito和其他的不受限的mock框架還在學習中。正在覓食乙個能降低隔離複雜度的框架。

下面陳述一下我想找的隔離框架的幾個特性

支援aaa原則,即「準備——執行——斷言」結果的框架,不大想用「錄製——重放」的方法。因為不自然。

框架必須是不受限的。可以支援靜態方法,私有構建等。哈哈,因為我比較貪心

框架有比較友好的文件。這樣可以降低學習曲線。

框架的語法,看得更自然舒服些。畢竟要用很久,順眼很重要!!

最好是能支援靈活的引數mock。就像easymock.anystring()。因為有些引數確實不想關心。

單元測試 單元測試文章收藏

前言 前段時間公司計畫做自動化測試,自己也打算圍繞幾個點做相關調研,現在想想呢?其實對自動化測試的概念都還不是十分清晰,當時主要還是圍繞 單元測試 向qa小夥伴學習了一段時間,現由於公司重組,學習中斷,這裡簡單記錄一些單元測試好文,留待後續參考.什麼叫自動化測試?自動化測試覆蓋率?覆蓋率如何做到的?...

單元測試之Django單元測試

每個應用,自帶tests.py 整合在django的專案檔案裡,更多是開發人員寫django自動的測試執行 3.1 前後置方法執行特點 django.test.testcase類主要由前 後置處理方法和test開頭的方法組成 特點 繼承於django.test.testcase 測試用例都是test...

單元測試(三) 建立多執行緒單元測試

junit本是不支援多執行緒的,乙個單元測試case主程序跑完,其他new出來的執行緒都會gg思密達。此篇mark乙份在junit中執行多執行緒的方法。net.sourceforge.groboutils groboutils core 5test slf4j public class device...