当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHPUnit袖珍指南之PHPUnit的目的

PHP
php 多线程上下文中安全写文件实现代码
PHP类的使用 实例代码讲解
用php实现让页面只能被百度gogole蜘蛛访问的方法
php 学习笔记
PHP编程过程中需要了解的this,self,parent的区别
php 操作excel文件的方法小结
使用PHP获取网络文件的实现代码
PHP 巧用数组降低程序的时间复杂度
php下将XML转换为数组
php 文件上传代码(限制jpg文件)
php 无极分类(递归)实现代码
PHP 采集获取指定网址的内容
PHP 将图片按创建时间进行分类存储的实现代码
PHP 存储文本换行实现方法
PHP 批量更新网页内容实现代码
用PHP查询搜索引擎排名位置的代码
用php实现的获取网页中的图片并保存到本地的代码
php实现首页链接查询 友情链接检查的代码
处理php自动反斜杠的函数代码
php实现的遍历文件夹下所有文件,编辑删除

PHPUnit袖珍指南之PHPUnit的目的


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 54 ::
收藏到网摘: n/a

到此为止,我们只有两个对Array和内建函数sizeof()的测试。当我们开始测试大量的array_*()函数时,每个都需要一个测试。我们可以每个都从头写起。但是,更好的方法是一次性写好一个测试基础构架,以后就只用写每个测试不同的部分。PHPUnit就是这样一个基础构架。

例5展示了如何用PHPUnit重写例4中的两个测试。

例5.用PHPUnit测试Array和sizeof().


<?php
 require_once'PHPUnit2/Framework/TestCase.php';

 classArrayTestextendsPHPUnit2_Framework_TestCase{
publicfunctiontestNewArrayIsEmpty(){
 //创建数组fixture。
 $fixture=Array();
 
 //断言数组fixture的大小是0。
 $this->assertEquals(0,sizeof($fixture));
}
publicfunctiontestArrayContainsAnElement(){
 //创建数组fixture。
 $fixture=Array();

 //为数组fixture增加一个成员。
 $fixture[]='Element';
 
 //断言数组fixture的大小是1。
 $this->assertEquals(1,sizeof($fixture));
}
 }
?>

  例5告诉我们用PHPUnit来写测试的基本步骤是:

1.类Class的测试类是ClassTest。

2.ClassTest一般继承PHPUnit2_Framework_TestCase。

3.测试是公有方法,没有参数,名字是test*。

4.在测试方法中,断言函数,如assertEquals()(见表6)用于断言实际值是否匹配期望值。

一个如PHPUnit的框架需要解决一系列问题,有些看起来互相冲突。测试必须同时满足以下条件:

易学

测试必须容易学,否则,开发人员不会去学

易开发

测试必须容易开发,否则,开发人员不会去开发

易读

测试代码必须没有外部关系,这样测试本身不会在杂乱无章中迷失。

容易执行

测试应该很容易执行,执行的结果以一种清楚和明确的格式表达出来。

快速执行

测试应该执行的很快,这样每天才能执行上千次。

代码隔离

测试之间不能互相影响,测试顺序的改变不应该影响结果。

可组合的

我们应该可以以任何组合来运行测试,这是代码隔离的一个必然结果。

这些约束条件有两个主要的冲突:

易学vs易开发


测试通常不需要应用到编程全部的灵活性。很多测试工具提供了它们自己的测试脚本语言,这些语言只有书写测试所需特性的最小集,因为没有噪声来干扰你的测试内容,写出来的测试易读易写。但是学一种新的编织邮件和一套工具还是不方便的,容易混淆视听。

代码隔离vs快速执行

如果你想要一个测试的结果不影响另一个,每个测试在开始运行的阶段,都需要创建测试的全专题,返回后又要恢复运行之前的状态。可是,设置状态需要的时间很长(如,连接到数据库,用真实数据初始化到一个已知状态)

PHPUnit解决这个问题的办法是采用PHP作为测试语言。有时,全功能的PHP对于书写短小的,直接的测试是过于强大了,不过,我们利用的程序员已经有使用PHP的全部经验。因为我们需要说服勉强的测试人员,降低书写这些初始测试的门槛是及其重要的。