新建一個類庫項目,然后添加一個LINQ To SQL的子項,把下表拖放進LINQ To SQL面板。
數據表結構
數據表中數據
然后在類庫的CS文件中,添加入下代碼:
1 public bool GetRecord(int id)
2 {
3 DataClasses1DataContext DCDC = new DataClasses1DataContext("server=.;database=mytestdb;uid=sa;pwd=sa;");
4 if (DCDC.GetTable().Where(record=>record.ID ==id).Count() ==1)
5 {
6 return true;
7 }
8 else
9 {
10 return false;
11 }
12 }
13
當然測試是不關心我們用什么技術實現方法的,它只關系輸入和輸出。
這時我們再運行測試,會發現測試通過了,這時我們叫做“綠”。
可能有的人發現,在這個測試中,只能測一個數據,沒有代表性,如果要測多個數據,還得一個一個換id值和expected值。是的,這是一個頭痛的事,得想們辦法來解決。
正好,微軟有提供數據驅動的單元測試,什么意思呢?就是可以把id和expected的值保存在數據源中,然后批量測試。如果全通過說明這個方法實現的沒問題,如果有錯,也可以針對性的能找出什么數據使GetRecord方法報錯的。這個東西很不錯。
首先來構建一個數據源,XML是個不錯的選擇,新建一個RecordExistTestCase.xml文檔,內容如下
1
2
3
4 0
5 false
6
7
8 -1
9 false
10
11
12 1
13 true
14
15
16
當然你還可以添加你以為好的測試用例。
再改造一下測試方法
1 [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\RecordExistTestCase.xml", "pic", DataAccessMethod.Sequential)]
2 [ DeploymentItem("TestDataOperate\\RecordExistTestCase.xml")]
3 [ TestMethod()]
4 public void GetRecordTest()
5 {
6 ……
7 }
8
OK,現在就要以用上面xml里的數據來批量測試了。
測試通過來,接下來就要程序員來整理一下自寫的代碼了,比如書寫規范問題,方法是否冗余重復,注釋是否完善等。也就是所說的重構了。
到此,一個TDD cycle就完成了,現實的cycle可能更復雜,這里只是對單個測試條目單個方法進行說明的。
TDD更適合在敏捷的開發中去用,比如XP,雖然scrum是側重管理和組織,也能很好的溶入TDD。
文章來源于領測軟件測試網 http://www.kjueaiud.com/