TDD之驱动程序和占位程序,和类的接口与实现

来源:互联网 发布:网络爬虫视频 编辑:程序博客网 时间:2024/06/06 02:58

 

            TDD 测试驱动开发,每一个函数都应该作为一个独立于程序其他部分的单元进行设计,编码和测试。当我们将各个函数都视作独立单元时,就可以把一个大的任务划分为一系列较小的,更易操作的任务。但如何在程序之外对本应包含于其中的一个函数进行测试?方法之一是写专门用来测试函数的程序,像这样的程序就叫做驱动程序


         如果对每一个函数都进行了单独测试,你就能发现程序中的绝大部分错误,而且,还可以发现哪个函数有什么样的错误。如果只是对整个程序进行测试,也许仍然可以发现其中是否出错,但并不知道是哪儿出错了。一旦完全测试了某个函数之后,就可以将该函数用到其他函数的驱动程序中。每一个函数都应该放在程序中进行测试,而且测试程序中只有待测试的函数是没有被测试过的。但是,在测试其他函数时最好使用经过完全测试的函数,如果发现了bug,你就可以知道bug是在未经测试的函数中。有时,完全不使用未编写和未经测试的函数去测试另一个函数是不可能或者比较麻烦。在这种情况下,你可以使用这个缺失或未经测试的函数的简化版。这种简化了的函数称作占位程序。这些占位程序无需进行完全正确的计算,但它们可产生足以用于测试的值,而且非常简单,在运行时可以提供便利。使用带占位程序的程序描述允许你测试并修改基本的程序描述。这优于编写一个新的,完整的程序去测试各个函数。基于这个原因,带占位程序描述通常是进行测试的有效方法。一个通用的方法是使用驱动程序测试一些基本函数,例如输入和输出函数,然后使用带占位程序的程序描述测试剩余的函数。每次使用一个函数来代替相应的占位程序:首先使用一个完整的函数定义来代替占位程序,并进行测试;一旦该函数测试完毕,就使用另外的函数来代替相应的占位程序,以此类推,直到产生最后的程序。


测试函数的基本准则:

         任何一个函数都应该放在某个程序中进行测试,而且这个程序中除了被测试 函数以外的所有其他函数都已经被完全测试和调试过。

 

          封装就是要求定义的类能让程序员不需要关心类中的具体实现细节,,使用该类的程序员知道如何使用该类即可,这些如何使用类的比标准就称为接口或者API。(API在此就是如何使用类的标准)这种将接口和实现分离的类称为抽象数据类型(ADT)


定义一个C++类,分清接口和实现

        变量声明    成员函数声明(及注释)   成员函数定义      私有     实现          实现                实现                    公有     实现          接口                实现                                                                                                                                  




 class DayOfYear{public:    void input();    void output();    void set(int newmonth, int newday);    void set(int newmonth);//前提条件//执行结果    int getMonthNumber();    int getDay();    private:    char firstL;    char secondL;    char thirdL;    int day;};



     将类的接口和实现分离,一个最明显的好处就是在修改类的具体实现代码时,无需修改程序的其他部分。有助于项目分工,如果类的接口设计良好,那么当一个人在编写类的实现代码时候,其他人可以同时使用该类编写代码。








0 0
原创粉丝点击