單元測試是一個非常好用的工具,是一個Java程序員修養的一部分。從04年開始,我就開始在項目實踐中使用單元測試。十幾年來,參與的項目基本上都或多或少的使用了單元測試,多的能有100%覆蓋率的要求,少的也要覆蓋主要代碼,發現這個實踐在提高軟件質量和開發速度上還是很有好處的。在和朋友同事的交流中,發現有很多項目沒有使用單元測試,也有很多程序員不會寫單元測試,但是大家對這個都很有興趣。所以我想把自己掌握的關於單元測試的技能(架構、設計和技術)和實施策略分享一下。當然,要是有那個企業願意要求我去做相關的內訓和諮詢,我會很高興的。 單元測試這系列想講講兩方面內容: 本文包括下面幾部分的內容 單元測試的定義指程序員編寫的用於測試邏輯代碼的代碼。我的理解中單元測試分成以下兩類: 代碼測試代碼測試是指對代碼的實現進行測試,不依賴於第三方環境,運行速度很快。舉幾個例子:
集成測試是指集成了第三方依賴之後的測試。它會依賴於第三方環境,運行速度相對代碼測試慢。舉幾個例子:
在軟件工程中,大家都知道越早開始測試越好,越早開始測試就能越早發現缺陷,修改代價就越小。 單元測試是可以自動化運行的,如果代碼有良好的單元測試覆蓋,在對代碼進行重構和修改之後,我們可以用極短的時間(幾分鐘)對整個系統進行一下測試,測試全部通過,這個說明的修改對系統沒有造成嚴重影響(這不能說明單元測試覆蓋不到的地方也沒有問題),於是你就可以安心的繼續修改代碼和重構代碼。 有助於提高代碼質量和架構設計爲了便於單元測試和代碼覆蓋,架構必然會在邏輯封裝,解耦合,依賴注入,控制反轉,對外接口封裝等方面進行優化。
編寫良好的單元測試代碼可以自動化運行,可以在所有的開發人員的環境裏運行,可以在持續集成環境裏運行,可以在每次代碼修改提交後運行,項目的代碼和功能在反覆的收到測試。 加快開發速度前期的小小投入,能夠在整個項目週期中發揮作用,能夠提高代碼的質量,能夠對代碼進行早期測試,能夠減少代碼Bug,能夠保證代碼不會被其他代碼破壞。修改Bug和調試的時間、相關的溝通時間被大幅度的減少。項目時間能更有保證。 起到代碼文檔的作用對於一個方法或者一個對象的使用,有的時候光用註釋很難說清楚。單元測試中對該方法/對象的使用提供了實例說明的作用,使我們更容易理解對其的使用。 Java程序員單元測試工具庫寫單元測試也是需要掌握一些工具的,不過這些工具使用起來都比較簡單,也和容易學習。在後面的文章中,我將會介紹其中的一部分我經常用到的。 單元測試框架在Java世界中,有兩個使用最多的單元測試框架,JUnit和TestNG。使用最多和支持最廣泛的是JUnit。後面的文章中我將會給大家介紹一下它的使用。 Mock工具Mock工具是進行代碼測試所必須掌握的一個工具。目前流行的有Mockito, EasyMock和JMock這三種。我以前用過EasyMock和JMock,後來開始使用Mockito之後就停不下來了。後面的文章中會給大家介紹一下它的用法。 其他工具通用型的我將會介紹Hamcrest,一個用於驗證測試結果工具庫。其他的有一些用於各種專門目的而使用的工具,這類工具有很多,比如
|
【Java程序員修煉之道 之 單元測試】
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.