接下来就要实现GetRecord方法。
新建一个类库项目,然后添加一个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
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
5
6
7
8
9
10
11
12
13
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。