天天看點

如何寫單元測試什麼是單元測試單元測試的作用如何寫測試類概念運作注意事項

什麼是單元測試

單元測試(unit

testing),是指對軟體中的最小可測試單元進行檢查和驗證,單元是人為規定的最小的被測功能子產品,在java中指的是一個類,凡是涉及其他類的使用都使用mock或指定固定的傳回。

單元測試的作用

測試代碼邏輯,快速回測,優化代碼,大大減少後期維護

如何寫測試類

  1. 首先看代碼邏輯是否正确,如果不正确需要修改邏輯,然後再寫測試類
  2. 找到方法的所有分支結構,找到可以覆寫方法所有邏輯的組合,每個組合寫一個測試方法
  3. 方法需要的外部邏輯調用都采用mock測試,mock對應的結果,方法調用完成,驗證方法的調用次數和結果斷言

概念

  1. mock就是在測試過程中,對于某些不容易構造或者不容易擷取的對象,用一個虛拟的對象來建立以便測試的方法。
  2. 斷言是程式設計術語,表示為一些布爾表達式,程式員相信在程式中的某個特定點該表達式值為真。對于我們來說就是,方法調用傳回的結果應該是多少。

運作

覆寫率的方式運作測試類,檢視測試類對應的類的覆寫率,如果未覆寫的分支需要補充測試類,覆寫率至少達到90%算合格

注意事項

  1. mock傳回的時候,如果是傳回實體,需要使實體的所有屬性的值互不相同,這樣能更容易測試出問題
  2. 修改代碼要同時修改測試類,如果不及時修改,後面會很難改,修改的時候不要為了測試能跑通而修改,這樣修改沒有意義
  3. 為了避免同一個類之間的資料互相影響,盡量少使用成員變量,如果使用成員變量,那指派要在@BeforeEach(junit5)注釋的方法裡做,這樣的方法在每個方法執行之前都會執行,就不會影響下一個方法的測試
  4. 單元測試盡量用真實的資料測試,這樣更容易發現問題
  5. 單元測試需要注釋清晰,不要把所有的邏輯都在一個方法裡測試,否則,很難維護
  6. 使用org.mockito包mock對象時,對象必須有無參構造,不能mock的對象可以通過建立子類的方式實作