使用测试驱动

发表于:2008-04-29来源:作者:点击数: 标签:驱动
关键字:测试这篇记录了一些我使用测试驱动的一些感想。 因为正好要实现一个 网络 通讯录,这是个不大的项目,就拿来练手了。 记得以前刚开始写程序时,要在里面添加一个功能时,都是在主程序里直接添加,对小程序来讲这是最快的方法,但随着项目越来越大。写
关键字:测试这篇记录了一些我使用测试驱动的一些感想。
        因为正好要实现一个网络通讯录,这是个不大的项目,就拿来练手了。
        记得以前刚开始写程序时,要在里面添加一个功能时,都是在主程序里直接添加,对小程序来讲这是最快的方法,但随着项目越来越大。写一个小功能都要在主程序上运行好些遍,当碰到有登陆框时更是麻烦,就是采用让启动自动化,速度还是很慢。后来就干脆分离出来做,将小功能的接口都想好,另建一个工程。这样对实现低耦合也很有好处,因为引用不到外部的数据,只能以建立接口的方式。但是还是遇到了麻烦,每个小功能都建立一个工程来做,显然很难管理,特别是当要做个普通的类实现一个小功能时。这个方法我想更适合项目中一些功能相对比较独立的模块的。因此我的代码测试这块做的并不是很细,直到后来发现了X-UNIT。
        原来测试可以做到这么细的,并且是全自动的~~在将功能分了一个个类后,对一些主要的类都写一个继承于TTestCase的类,加入测试工程,具体可参考X-UNIT的Demo,网上也有很多这方面的教程。
        比如我要写个TPersons类,实现人员的添加、删除、查找、选择分组等等功能;分别为Add,Del,Find,PersonsOfGroup等等方法。现在我们可以先写测试类        TPersonsTest,里面有TestAdd,TestDel,TestFind,TestPersonOfGroup等方法,分别用来测试TPersons类的方法。像TestDel我是这样(DELPHI语言):
  TestAdd;//添加一个记录
  try
    FPersons.Del(0);//测试删除
  except
    Check(false,'Del error');
  end;
  Check(FPersons.Count = 0,'Del Failed');//删除是否成功
 
        接下来我们再编写Tpersons.del的具体实现。这个在XP中叫测试驱动,很Cool的名字吧:)
        然后我们运行时测试工程会自动调用,显示错误的地方,或测试不通过的地方。像调用FPersons.Del(0)后,FPersons.Count还为1时就显示'Del Failed'。根据不同的被测试类要考虑不同的情况,模拟各种输入值等等。
        最后所有测试都通过,一片绿色~~~心里特安心!
        初看在写个类时都编写测试用例的方式感觉浪费时间,先不说调查数据和XP开发上说的各种好处。起码我自己觉的我的代码都是能稳定工作。特别是代码行越来越多时,每次大的修改后,心里感觉都不塌实,怕哪里有遗漏。但使用测试驱动方式,只要测试写的好,每次修改,运行测试,只要看她的红绿灯就OK了。

原文转自:http://www.ltesting.net