當然測試是不關心我們用什么技術實現方法的,它只關系輸入和輸出。
這時我們再運行測試,會發現測試通過了,這時我們叫做“綠”。
可能有的人發現,在這個測試中,只能測一個數據,沒有代表性,如果要測多個數據,還得一個一個換id值和expected值。是的,這是一個頭痛的事,得想們辦法來解決。
正好,微軟有提供數據驅動的單元測試,什么意思呢?就是可以把id和expected的值保存在數據源中,然后批量測試。如果全通過說明這個方法實現的沒問題,如果有錯,也可以針對性的能找出什么數據使GetRecord方法報錯的。這個東西很不錯。
首先來構建一個數據源,XML是個不錯的選擇,新建一個RecordExistTestCase.xml文檔,內容如下
1 <?xml version="1.0" encoding="utf-8" ?> 2 <DataSourses> 3 <pic> 4 <id>0</id> 5 <value>false</value> 6 </pic> 7 <pic> 8 <id>-1</id> 9 <value>false</value> 10 </pic> 11 <pic> 12 <id>1</id> 13 <value>true</value> 14 </pic> 15 </DataSourses> 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。