TDD Unit Test

TDD-UnitTest/MsTest簡介及實例練習

陳淑敏 2016/12/29 09:00:00
1395

主題

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 介紹如何從目標物件的方法,建立對應的單元測試,MSTestTesting 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

陳淑敏