0%

【Unit Test】重構 (二) 單元測試的可讀性

  1. 方法命名  :  受測的方法名稱Test_動作_預期結果

    這樣可以看標題名稱,馬上就能大略的明白此單元測試的受測者與目標是什麼,對於之後如果改版發生單元錯誤時,也才能明白該如何修復

    [![](https://3.bp.blogspot.com/-CaS4BNBA6a4/VtzcFkfagkI/AAAAAAAAHuQ/2mAf5riuHfk/s1600/1.png)](https://3.bp.blogspot.com/-CaS4BNBA6a4/VtzcFkfagkI/AAAAAAAAHuQ/2mAf5riuHfk/s1600/1.png)
    錯誤寫法 
     哪天因為改版造成這個單元測試錯誤了,要修復時非得看完全部的Code才能明白何謂"正確的狀況",對於維護來說是不利的
    [![](https://2.bp.blogspot.com/-B7ro_7k5cAo/VtzauPAEglI/AAAAAAAAHuE/KnntqnWuvpQ/s640/1.png)](https://2.bp.blogspot.com/-B7ro_7k5cAo/VtzauPAEglI/AAAAAAAAHuE/KnntqnWuvpQ/s1600/1.png)
    建議寫法
  2. 共用的參數應該有個父類別來管理
    有時候我們會為了測試某些情境,對於public static的東西進行設定,但也因為這是public static的變數,為了避免與其它單元測試交互影響,所以我們會在TestCleanUp的方法中做清除的動作

    [![](https://1.bp.blogspot.com/-t9BldDR6eJU/VtzepBta3lI/AAAAAAAAHug/Uv5g94SdikU/s640/1.png)](https://1.bp.blogspot.com/-t9BldDR6eJU/VtzepBta3lI/AAAAAAAAHug/Uv5g94SdikU/s1600/1.png)

    但這種寫法如果散落在各個單元測試的Class之中,對於維護也是一大挑戰,所以建議建立一個TestBase之類的父類別,讓所有單元測試的類別繼承它,並統一管理。
    總結,單元測試是為了讓程式更有品質,且在一些保護的基礎上進行改版,但如果單元測試的撰寫沒有一些有效的管理,對於後續的維護成本可能會比沒單元測試來的更高更難維護,如果單元測試寫的不清不楚,誰會知道這個測試到底要保護什麼呢?