回答
啊予以考慮。我最喜歡的科目:-)從哪裏開始?
據傑拉德·梅薩羅斯(閱讀本書對單元測試)的xUnit測試模式
- 測試應該降低風險,不 介紹吧。
- 測試應該很容易運行。
- 測試應易於維護 系統升級的身邊
有些事情要使它更容易些:
- 測試只能失敗,因爲一個 原因。 (測試應該只測試一件事,例如避免多次斷言。)
- 應該只有一個測試因爲這個原因而失敗。 (這讓你的testbase維護)
- 最小化測試依賴
其他的事情(在數據庫,文件,UI 等沒有 依賴)查看:
命名
有一個描述性名稱。測試名稱應該像規範一樣閱讀。如果你的名字太長,你可能會測試太多。
結構
使用AAA結構。這是模擬框架的新時尚,但我認爲這是一種很好的方式來構建像這樣的所有測試。
安排您的上下文
法,這樣做需要的東西進行測試
斷言,聲稱要檢查
我通常把我的測試中的代碼三個大塊內容。瞭解這種模式使得測試更具可讀性。
嘲弄與存根
當使用模擬框架總是試圖訴諸嘲諷前使用存根和基於狀態的測試。
存根是代表您試圖測試的對象的依賴關係的對象。您可以將行爲編程到它們中,並且可以在測試中調用它們。嘲笑通過讓你聲明他們是否被調用以及如何進行擴展。嘲笑是非常強大的,但它可以讓你測試實現,而不是你的代碼的前後條件。這往往會使測試更脆弱。
- 不能訪問外部資源
- 可讀
Pragmatic Programmers的答案:好的測試應是A-TRIP
- 自動
- 徹底
- 重複
- 獨立
- 專業
- 可自動化:沒有人工干預,應要求運行測試(CI)。
- 完成:它們必須涵蓋儘可能多的代碼(Code Coverage)。
- 可重複使用:無需創建將只執行一次的測試。
- 獨立:獨立執行測試不應該影響另一個的性能。
- 專業:測試應該具有相同的值作爲代碼,同樣的專業精神,文檔等
其他要記住的因素是運行時間。如果測試運行時間過長,可能會被跳過。
- 必須是全自動的。
- 不得假設任何先決條件 (產品X被安裝,文件和Y 位置等)。
- 必須是獨立人士,儘可能 運行腳本有關。但是,結果可以僅由專家專家分析 。
- 必須在每個測試版上運行。
- 必須提供可驗證的報告。
單元測試應該很快:幾百個測試應該能夠在幾秒鐘內運行。
我沒見過其他人提到的一個是小。單元測試應該測試一件特定的事情,就是這樣。我試圖通過將它們重構爲自己的方法來實現只有一個斷言並最小化設置代碼的數量。我也會創建我自己的自定義斷言。一個很好的小單元測試IMO大約10行或更少。當一個測試很小時,很容易就能很快理解測試正在做什麼。從長遠來看,大型測試最終無法維持。
當然,小事不是我唯一的目標......它只是我在單元測試中看重的東西之一。 :-)
測試是不是一個單元測試,如果:
- 它談論到數據庫
- 它通過網絡
- 通信倒是文件系統
- 這不可能與任何其他單元測試同時運行
- 您必須對您的環境執行特殊的操作(例如編輯配置文件)才能運行它。
做這些事情的測試並不差。通常他們值得寫作,而且可以用單元測試工具編寫。但是,能夠將它們與真正的單元測試分開很重要,以便我們可以保留一組測試,以便在進行更改時能夠快速運行。
- 1. 我應該單元測試一個具有MEF屬性的類嗎?
- 2. 應該是什麼在單元測試
- 3. 我應該寫什麼樣的測試?
- 4. 我該怎麼做這樣一個典型的單元測試?
- 5. Cocos2d有什麼好的測試工具?
- 6. 什麼單元測試工具應該用於Silverlight 4?
- 7. 測試一個函數:還有什麼應該測試?
- 8. 應該爲代碼分支應用什麼樣的單元測試組合?
- 9. 具有派生屬性的域類的Grails3單元測試
- 10. 我應該在單元測試中測試視圖的屬性嗎?
- 11. 使用具有屬性的'Pester'(Powershell單元測試框架)
- 12. 爲什麼一個類具有其元類的屬性?
- 13. 一個單元應該在rails中測試持久性嗎?
- 14. 單元測試中的「壞」屬性是什麼?
- 15. 什麼樣的單元測試,在android應用程序
- 16. 使用IoC時單元測試的策略應該是什麼?
- 17. 單元測試和屬性
- 18. 單元測試ios屬性
- 19. 嘲笑單元測試中的依賴有什麼好處?
- 20. 單元測試應該有多徹底?
- 21. 我應該測試一個ASP MVC項目中的屬性嗎?
- 22. 什麼是測試屬性?
- 23. 應該測試什麼
- 24. 我應該測試什麼?
- 25. 測試什麼時候沒有屬性
- 26. 調試使用多個[Row]屬性編寫單元測試的好方法是什麼?
- 27. 如何爲具有多個屬性的對象編寫單元測試
- 28. 我應該拋棄什麼樣的「沒有這樣的元素」?
- 29. 單元測試IBOutlet的屬性
- 30. 虛擬屬性的單元測試
重複的http://stackoverflow.com/questions/61400/what-makes-a-good-unit-test – Spoike 2009-02-26 08:09:38