單元測試框架
框架如何幫助我們撰寫測試
- 不用重複造輪子:用現有已經開發好的 API 進行測試的撰寫,可以很方便並快速的使用
- 結合 IDE 功能:方便開發人員快速知道目前的方法有沒有測試案例,又或者是現在的測試涵蓋率是多少
- 可透過多種方式執行測試:可以自動化執行 (ex: CI),也可以透過命令列執行
- 確認結果:快速確認測試失敗的原因。
該選哪個測試框架?
每一個框架都有各自的 API 設計風格和哲學,如果仔細去查既有的資料和討論,可以發現其實各自都有其用戶,對於大部分的情境,可能推薦哪一個框架的原因更多的是熟悉和開發的習慣。
以我接觸過的框架來說,我會更推薦 xUnit,但我接觸 xUnit 也是在使用 MSTest 一陣子之後,才找了機會研究了 xUnit,而且看了微 軟團隊,有滿多測試都使用 xUnit 做為測試的框架,想必應該是有甚麼獨到的地方,這才引起了我的好奇心。
我覺得 xUnit 在 API 設計上,更貼近 C# 的設計風格,一開始可能會需要查看文件才會知道要怎麼做撰寫,但是熟悉後會發覺這樣的寫法其實是很直觀的。
雖然沒用過 NUnit,但是影片針對 xUnit 的說明和我目前感受到是類似的
簡單比較
特性/框架 | MSTest | NUnit | xUnit |
---|---|---|---|
優點 | - IDE 整合完整 -易於上手 - 微軟官方支持 | - 靈活性高 -強大的測試特性 | - API 設計風格直觀 - 微軟團隊使用 xUnit 做測試 |
缺點 | - 討論度相對來說較低 | - 沒用過不太清楚 | - 測試運行方式不同 - 安裝上不比 MSTest 簡單 |
考量點 | - 開始學習撰寫測試 - 較少的學習成本 | - 尋求更多靈活性和功能 -不介意花時間學習 | - 想了解不同框架設計風格 - 微軟團隊有在用,想必是有獨到之處吧 |
結論
- 如果你從來沒有寫過測試,那就從 MSTest 開始吧,內建的功能已經足夠好用,而且目前已經開源,也都有持續在更新;
- 如果你已經有撰寫測試經驗,單純想嘗試看看其他的測試框架,那選擇沒有使用過的,體會並比較差異,找出適合你和團隊的選擇。
Reference
- ChatGPT