單元測試對于每個項目都是需要的,它不僅僅是幫助找出代碼中缺陷,更重要是在你修改與增加新模塊時能確保原來的模塊沒有被破壞。
下面是5個單元測試容易放的錯誤:
1. 與協作模塊一起去測試算法。算法邏輯如果能從協作的代碼中分離出來,應該是最簡單的測試。否則,你得必須通過作業隊列之前完成測試。作業隊列中只有一部分復雜的邏輯。除非你正在測試是作業隊列本身,并分別測試邏輯。無論代碼和測試都需要變得容易編寫與管理。
2. 太多Mocking. 我們知道通過我們會使用Mocking來隔離依賴,使得它們獨立。換句話說,就是使你的代碼模塊化。當你Mock了整個世界,已沒有什么迫使你分得開的部分。那你最終得到的代碼是不能孤立地創造任何東西---全部糾結在一起了。
3. 沒有使用asserts斷言。有時我看到一些測試只是創建了對像,調用了方法??赡芡瓿墒且粋€驗證創建或調用循環。但是,沒有使用任何的asserts檢查。檢查代碼是否是期待的行為。的確,代碼可運行,如果有拋出異常,也沒有任何東西可以驗證。
4. 使用PRint打印語句。 我看到一些是從手工測試遺留下來的習慣。你看看它的價值再決定正確與否。但是,所有的檢查應該使用斷言進行。如果斷言失敗,你會看到它,因為測試失敗。如果測試通過,沒有什么應該被打印出來。有時候,開發測試時,它可以用print語句非常有用。但在這種情況下,添加一個標志,并關閉測試中打印,來檢查這個標志。
5.檢查log語句,不是結果。值得慶幸的這是不常見的,但我還是看到了,否則很能干的開發者做到這一點。無論結果是多么重要,沒有打印在log中,可能在代碼有錯誤,并且測試仍然通過。
最后3個錯誤容易避免,前2個需要花些時間,但代碼最終漂亮的隔離開了。
希望對您軟件開發有幫助。
您可能感興趣的文章:
使用Moles框架實現HttpWebRequest與HttpWebResponse的單元測試
數據訪問層的單元測試
軟件項目避免開發兒童玩具
作者:Petter Liu
出處:http://www.49028c.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
該文章也同時發布在我的獨立博客中-Petter Liu Blog。
新聞熱點
疑難解答