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