如何开始TDD

发表于:2009-12-07 12:34

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Nick Wang(cnblogs)    来源:51Testing软件测试网采编

分享:

  让我们看看对于这个QuickSort,我们还能写出哪些测试用例呢:

[Fact]
public void should_sort_empty_array()
{
   var arr 
= new int[]{};
   var expected 
= new int[]{};

   var actual 
= QuickSort(arr);
   AssertArrayEqual(expected, actual);
}

[Fact]
public void should_sort_array_with_only_one_element()
{
   var arr 
= new int[]{1};
   var expected 
= new int[]{1};

   var actual 
= QuickSort(arr);
   AssertArrayEqual(expected, actual);
}

[Fact]
public void should_sort_array_already_sorted()
{
   var arr 
= new int[]{1,2,3,4,5};
   var expected 
= new int[]{1,2,3,4,5};

   var actual 
= QuickSort(arr);
   AssertArrayEqual(expected, actual);
}

private void AssertArrayEqual(int[] expected, int[] actual)
{
   Assert.Equal(expected.Length, actual.Length);
   
for(int i=0;i<actual.Length;i++)
   {
     Assert.Equal(expected[i],actual[i]); 
   }
}

  好了,到这里你就可以安心的修改代码,无需一遍一遍的输入测试数据,检查输出,也不需要担心你的修改会使程序出错。对于看代码的人来说,可以看到什么样的输入会获得什么样的输出,以及如何使用这个方法。当把代码下载下来研究的时候,也不需要自己输入测试数据了,如果想要换一个不同的测试数据,只要添加一个测试就行了。

  那么如何先写测试后写代码呢?

  前面说了,对于一段程序的测试其实就是一些输入与输出组成的测试用例,这些测试用例与你如何实现QuickSort方法毫无关系,因为QuickSort的功能就是排序,不管里面的代码如何实现,他都必须要完成排序的这个功能,因此只要根据排序的要求写就行了。一旦你熟悉了如何编写测试用例,如何考虑程序可能获得的各种输入,从后写测试到先写测试,只是一个改变习惯适应的过程,并不会很难。

  倡议以后发表代码的同学,附上自动化测试(并注意代码风格、编码规范),于人于己都有好处。当然,决定权在你自己手里。

推荐阅读:

我的TDD实践:可测试性驱动开发(上)

我的TDD实践:可测试性驱动开发(中)

我的TDD实践:可测试性驱动开发(下)

测试驱动开发(TDD)基础知识

关于单元测试/TDD的成本和收益的一些想法

实际经验证明:TDD可以提高软件质量

敏捷质疑:TDD

22/2<12
价值129的会员专享直播免费赠送,添加微信领取听课名额哦~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号