Skip to main content

單元測試框架

框架如何幫助我們撰寫測試

  1. 不用重複造輪子:用現有已經開發好的 API 進行測試的撰寫,可以很方便並快速的使用
  2. 結合 IDE 功能:方便開發人員快速知道目前的方法有沒有測試案例,又或者是現在的測試涵蓋率是多少
  3. 可透過多種方式執行測試:可以自動化執行 (ex: CI),也可以透過命令列執行
  4. 確認結果:快速確認測試失敗的原因。

該選哪個測試框架?

每一個框架都有各自的 API 設計風格和哲學,如果仔細去查既有的資料和討論,可以發現其實各自都有其用戶,對於大部分的情境,可能推薦哪一個框架的原因更多的是熟悉和開發的習慣。

以我接觸過的框架來說,我會更推薦 xUnit,但我接觸 xUnit 也是在使用 MSTest 一陣子之後,才找了機會研究了 xUnit,而且看了微軟團隊,有滿多測試都使用 xUnit 做為測試的框架,想必應該是有甚麼獨到的地方,這才引起了我的好奇心。

我覺得 xUnit 在 API 設計上,更貼近 C# 的設計風格,一開始可能會需要查看文件才會知道要怎麼做撰寫,但是熟悉後會發覺這樣的寫法其實是很直觀的。

雖然沒用過 NUnit,但是影片針對 xUnit 的說明和我目前感受到是類似的

簡單比較

特性/框架MSTestNUnitxUnit
優點- IDE 整合完整
-易於上手
- 微軟官方支持
- 靈活性高
-強大的測試特性
- API 設計風格直觀
- 微軟團隊使用 xUnit 做測試
缺點- 討論度相對來說較低- 沒用過不太清楚
- 測試運行方式不同
- 安裝上不比 MSTest 簡單
考量點- 開始學習撰寫測試
- 較少的學習成本
- 尋求更多靈活性和功能
-不介意花時間學習
- 想了解不同框架設計風格
- 微軟團隊有在用,想必是有獨到之處吧

結論

  1. 如果你從來沒有寫過測試,那就從 MSTest 開始吧,內建的功能已經足夠好用,而且目前已經開源,也都有持續在更新;
  2. 如果你已經有撰寫測試經驗,單純想嘗試看看其他的測試框架,那選擇沒有使用過的,體會並比較差異,找出適合你和團隊的選擇。

Reference