《單元測試之道》Java版學習日誌
前言
在軟體工程這門課程中,我有幸在老師的推薦下讀了這本書。首先談單元測試的概念,單元測試是開發者編寫的一小段程式碼,用於檢驗被測程式碼的一個很小的、很明確的功能是否正確。通常而言,一個單元測試是用於判斷某個特定條件或某個特定函式的行為。我們使用單元測試,可以讓我們的設計更好,甚至大大減少花在除錯上的時間。
首個單元測試
java中使用asserEquals()方法來比較期望值和真實值是否相等
public void calc() { MSA msa = new MSA(); int a[] = {1,-2,3}; int length = 3; msa.Calc(a, length); Assert.assertEquals(3, msa.sum); }
使用JUnit編寫測試
介紹幾種斷言
(1)asserEquals,以上介紹過
(2)assertNull
assertNull([{String message},java.lang.Object object),驗證給定物件是否為空
(3)assertSame
assertSame({String message},expected,acture),驗證expected與acture是否為同一個物件
(4)assertTure
assertTure(true),驗證給定的二元條件是否為真
測試那些內容
Right-BICEP,Right——結果是否正確,B——是否所有的邊界都正確,I——能查一下反向關聯嗎,C——能用其他手段交叉檢查一下結果嗎,E——你能否可以強制錯誤條件發生,P——是否滿足效能要求。
邊界條件
用CORRECT來表示我們需要考慮哪些邊界條件。
- 一致性
- 有序性
- 區間性
- 引用,耦合性
- 基數性
- 時間性
使用Mock物件
Mock物件是真實物件在除錯期的替代品。在使用mock物件進行測試時,分為三個步驟(1)使用一個介面來描述這個物件。(2)為產品程式碼實現這個介面。(3)以測試為目的,在mock物件中實現這個介面。
好的測試所具有的品質
A-TPIR:
- 自動化
- 徹底的
- 可重複
- 獨立的
- 專業的
測試類的不變性
類的不變性是指一個或者幾個針對類物件的斷言。如果一個類物件有效的話,這些斷言必須為真。例如,對一個實現了sorted list的類,它的不變性就是:它的內容必須是有序的。
總結
總之,一個好的程式必須要經過測試才能確保安全有效的執行,對提高軟體質量是有很大幫助的。學習這本書對於單元測試有了更深的理解。