作者:The FORCE studio
本範例為利用Visual Studio 2010的單元測試功能,實現TDD(Test Driven Develop) 程式設計。
1 建立一個新專案(此以Windows Form應用程式專案為例)
2 在此方案加入一個『單元測試』專案:
2.2 按下【確定】後,輸入你的測試專案名稱,按下【建立】。
2.3 接下來,會出現下面的畫面,要讓您選擇要做單元測試的Function。 這時候,我們還沒有任何Function,所以按下【取消】來結束精靈,當然這個測試專案還是會產生出來,只是沒有任何TestClass。
4 按下【確定】後,VS就幫我們產生一個TestClass,裡面包含了一個空的TestMethod。
namespace TDD_Example01_TestProject
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
}
}
}
4.1 我們現在可以開始寫TDD的測試程式碼了。
例如: 我想寫一個可以統計我剛買的書本的價錢的函式,所以我先打上…
Book book1 = new Book();
Book book2 = new Book();
此時因為還沒建立Book類別,所以會出現下圖的錯誤訊息。
例如: 我想寫一個可以統計我剛買的書本的價錢的函式,所以我先打上…
Book book1 = new Book();
Book book2 = new Book();
此時因為還沒建立Book類別,所以會出現下圖的錯誤訊息。
把滑鼠游標指到Book上,按下「Ctrl+.」
Smart Tag上會出現兩個選項:
a. 產生Book的類別 : 選擇這個會直接在測試專案加入一個Book.cs。
b. 產生新的型別… : 可以讓使用者選擇建立的檔案名稱及專案。
所以我們選擇【產生新的型別…】,然後建立Book類別。
按下確定後,VS會在TDD_Example01這個專案建立一個Book.cs,裡面包含了一個空的Book類別。
4.1.1 回到原來的測試程式碼,我們想到應該要給每一本書一個代號和書名吧! 於是修改程式碼如下:
Book book1 = new Book("book01", "這一生都是你的機會");
Book book2 = new Book("book02", "終極7000單字,這本最強!");
同樣的,VS告訴我們尚未建立建構函式!
一樣帶出Smart Tag選擇:【在 你的專案 中產生建構函式】
回到Book類別,已經看到VS幫我們加入了兩個property和建構函式。
private string p;
private string p_2;
public Book(string p, string p_2)
{
this.p = p;
this.p_2 = p_2;
}
我們稍微自己把它整理如下:
private String BOOK_ID;
private String BOOK_NAME;
public Book(String sBook_id, String sBook_name)
{
BOOK_ID = sBook_id;
BOOK_NAME = sBook_name;
}
Book book1 = new Book("book01", "這一生都是你的機會");
Book book2 = new Book("book02", "終極7000單字,這本最強!");
同樣的,VS告訴我們尚未建立建構函式!
一樣帶出Smart Tag選擇:【在 你的專案 中產生建構函式】
回到Book類別,已經看到VS幫我們加入了兩個property和建構函式。
private string p;
private string p_2;
public Book(string p, string p_2)
{
this.p = p;
this.p_2 = p_2;
}
我們稍微自己把它整理如下:
private String BOOK_ID;
private String BOOK_NAME;
public Book(String sBook_id, String sBook_name)
{
BOOK_ID = sBook_id;
BOOK_NAME = sBook_name;
}
4.2 寫到這邊,我們應該感覺到了,除了測試程式碼之外,基本上原始的程式碼幾乎都是VS幫我們建立的。 是不是很方便呢?
最後我們只要再指定每本書本的價錢,建立一個統計價錢的函式就可以了。
最後的測試程式碼請參考:
[TestMethod]
public void MyTestMethod()
{
Book book1 = new Book("book01", "這一生都是你的機會");
Book book2 = new Book("book02", "終極7000單字,這本最強!");
book1.BOOK_PRICE = 100;
book2.BOOK_PRICE = 200;
List<Book> ListBook = new List<Book>();
ListBook.Add(book1);
ListBook.Add(book2);
Double ActualRslt = Form1.Cal_Total_Price(ListBook);
Double ExpectedRslt = 300;
Assert.AreEqual(ExpectedRslt, ActualRslt);
}
至於BOOK_PRICE這個property和Cal_Total_Price統計價錢的函式,就不再累述囉。
最後我們只要再指定每本書本的價錢,建立一個統計價錢的函式就可以了。
最後的測試程式碼請參考:
[TestMethod]
public void MyTestMethod()
{
Book book1 = new Book("book01", "這一生都是你的機會");
Book book2 = new Book("book02", "終極7000單字,這本最強!");
book1.BOOK_PRICE = 100;
book2.BOOK_PRICE = 200;
List<Book> ListBook = new List<Book>();
ListBook.Add(book1);
ListBook.Add(book2);
Double ActualRslt = Form1.Cal_Total_Price(ListBook);
Double ExpectedRslt = 300;
Assert.AreEqual(ExpectedRslt, ActualRslt);
}
至於BOOK_PRICE這個property和Cal_Total_Price統計價錢的函式,就不再累述囉。
5 寫完測試和專案的程式後,最後當然是執行測試程式,如果統計價錢的函式邏輯都正確的話,最後會得到下面的畫面! (END)
6 補充:
6.1
如果您是寫好專案的類別後,自行建立測試專案,請先將該專案的dll加入參考。
沒有留言:
張貼留言