当然测试是不关心我们用什么技术实现方法的,它只关系输入和输出。
这时我们再运行测试,会发现测试通过了,这时我们叫做“绿”。
可能有的人发现,在这个测试中,只能测一个数据,没有代表性,如果要测多个数据,还得一个一个换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。