SimpleTest是一个使用十分简单的单元测试工具。
一下内容是我自己设计的利用SimpleTest对一个项目进行单元测试的代码
一、文件结构
一个项目有多个文件夹,文件夹中还包含文件夹。我们要进行测试的代码即包含在这些文件夹中。要进行单元测试的情况,我认为有以下三种:
● 程序员进行某个函数、方法等的开发的时候,在开发完成时甚至开发过程中,边调试边进行测试。测试案例可能在进行开发的同时撰写,或者在项目的详细设计阶段即已经写好;
● 对一个模块(包含多个功能点)中的所有功能点进行一些集中的测试以检查是不是每一个功能点都能通过测试;
● 对于整个项目的统一单元测试。通常与每日构造结合。
针对以上三种情况,我设计的测试代码中包含以下文件夹和文件:
1)项目文件夹的根目录中,放置一个unit_test文件夹,其中包含setup.inc.php和index.php
setup.inc.php | 测试系统的初始化文件,每一个直接执行的测试程序都要包含它 |
index.php | 进行系统整体测试的程序 |
2) 每一个需要进行单元测试的子文件夹中,建立一个unit_test文件夹,其中包含一个index.php和若干与单元测试功能点所在的文件同名的文件。例如对于以下一个fruits模块(位于项目的fruits文件夹中),其结构如下:
文件夹结构 | 文件描述 |
fruits | fruits模块的文件夹 |
CFruits.class.php | 水果的基类 |
CApple.class.php | 苹果类 |
CBanana.class.php | 香蕉类 |
unit_test | 单元测试文件夹 |
index.php | 对fruits模块集中测试的程序 |
CFruits.class.php | 对fruits模块中的CFruits.class.php进行单元测试的代码 |
CApple.class.php | 对fruits模块中的CApple.class.php进行单元测试的代码 |
CBanana.class.php | 对fruits模块中的CBanana.class.php进行单元测试的代码 |
二、实现方法
通过上文,可以看出本设计中包含了三种测试和四种文件,四种文件分别为:
● 单元测试初始化文件(每个项目一个)。
● 单元测试文件(每个代码文件一个);
● 模块集中测试文件(项目中每个模块一个);
● 项目集中测试文件(一个项目一个);
1、单元测试初始化文件
<?php if (!defined('SIMPLETEST_SETUP')) { /* the following four constant defines the run types of TEST */ /** don't know what to run */ define('SIMPLETEST_RUN_UNKNOWN', 0); /** run the current unit of test */ define('SIMPLETEST_RUN_UNIT', 1); /** run the group of test units */ define('SIMPLETEST_RUN_GROUP', 2); /** run all tests */ define('SIMPLETEST_RUN_GLOBAL', 3); $simletest_run = SIMPLETEST_RUN_UNKNOWN; /* Install path SimpleTest */ define('SIMPLETEST_DIR', 'd:/web_sites/simpletest'); /* 项目根文件夹 */ define('SYS_ROOT', dirname(__FILE__) . '/..'); define('SIMPLETEST_SETUP', true); require SIMPLETEST_DIR . '/unit_tester.php'; require SIMPLETEST_DIR . '/reporter.php'; } ?> |
其中声明了四个常量以表示当前运行的测试为哪一种测试(单元/模块/项目/未知);定义了SimpleTest所在的文件夹;定义了当前进行单元测试的项目所在的文件夹;包含了基本的文件。