TDD-UnitTest/MsTest簡介及實例練習
主題: |
TDD-UnitTest/MsTest簡介及實例練習 |
文章簡介: |
介紹UnitTest/MsTest簡介及實例練習 |
作者: |
陳淑敏 |
版本/產出日期: |
V1.0/2016.12.26 |
1. Unit Test簡介
1.1 什麼是Unit Test (單元測試)
1.1.1 最小的測試單位
1.1.2 外部相依性為零
1.1.3 不具備商業邏輯
1.1.4 測試案例之間相依性為零
1.1.5 一個測試案例只測一件事
1.2 Unit Test特性:FIRST
1.2.1 Fast:快速
1.2.2 Independent:獨立
1.2.3 Repeatable:重覆執行
1.2.4 Self-Validating:可反應驗證結果
1.2.5 Timely:及時
2. Unit Test原則
2.1 在撰寫單元測試的程式碼時,有個3A原則,來輔助設計測試程式,可以讓測試程式更好懂,3A原則如下
2.1.1 Arrange:初始化目標物件/方法參數/建立模擬物件行為/設定環境變數期望結果
2.1.2 Act:實際呼叫測試目標物件的方法
2.1.3 Assert:驗證目標物件是否如同預期運作
3. MsTest簡介
3.1 Test標記
3.1.1 TestClass:測試類別
3.1.2 TestMethod:測試方法
3.2 驗證
3.2.1 Assert:基本驗證
3.2.2 CollectionAssert:集合驗證
3.2.3 ExpectedException:例外驗證
4. 開始前準備
4.1 實作Unit Test是建立於以下版本的環境:Microsoft Visual Studio Ultimate 2013
5. Unit Test動手做做看
5.1 介紹如何從目標物件的方法,建立對應的單元測試,以MSTest為Testing framework。
5.1.1 首先,先建立一個 Library 專案,裡面有一個 MyCalculator的類別(目標物件),一個UnitConversion(單位換算)的公開方法(目標物件的方法)。程式碼如下所示:
5.1.2 接著在畫面上按右鍵跳出選單後,點選[Generate Uint Test],按下[OK]即產生完相對應的單元測試了,如下所示:
5.2 現在就可以開始撰寫單元測試的程式碼了,如下所示:
5.2.1 撰寫前,先將測試的方法以最直覺的名稱命名,如同上面敘述的:Unit Test是最小的測試單位,測試案例只測一件事,所以此方法我想測試的是:
■ 1M=1000000的這件事,因此名稱取名為:UnitConversionTest_first_1_second_M_should_be_1000000()
■ 1B=1000000000的這件事,因此名稱取名為:UnitConversionTest_first_1_second_B_should_be_1000000000()
5.2.2 撰寫時,先標列出3A原則,並撰寫每個原則的定義:設定參數/物件及呼叫目標物件方法及驗證方法(因為是要比對相等,所以使用Assert驗證的AreEqual),這樣即完成單元測試程式碼了:
5.2.3 撰寫後,開始執行單元測試,可用熱鍵:Ctrl+R+T(執行單一測試) / Ctrl+R+A(執行所有測試),執行完可查看測試總管,如呈現綠燈,就表示測試目標物件方法成功,如呈現紅燈,就表示測試目標物件方法失敗,如下所示:
6. 結語
以上是TDD內容Testing中的Unit Test撰寫說明,當然還有包含了isolated unit test, web test, test framework的介紹,refactoring, simple design, TDD 與透過 specflow (cucumber) 來做到requirement, testing, design, liveing documentation的結合,所以就讓我們從基礎開始體驗TDD的世界!!
7. 參考來源
https://dotblogs.com.tw/hatelove/series/1?qq=30%E5%A4%A9%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8BTDD