首 页 | 精品电影 | 音乐天堂 | 在线游戏 | Flash MTV | 三湘书屋 | 幽默笑话 | 三湘图库 | 美女写真 | IT知识库 | QQ贴图 | 加入书签

网页制作网络编程图形图象操作系统冲浪宝典软件教学网络安全认证考试通信技术电子商务业内动态书籍教程原码

最近更新 文章分类 多媒体类 精品软件

本站搜索:
您的位置:三湘时空 -> IT知识库 -> 文章分类 -> PHP技巧 -> PHPUnit袖珍指南之自动测试
PHPUnit袖珍指南之自动测试


文章类别:PHP技巧 来源: 作者: 发表日期:2006-5-28 字体:[ ]

小游戏 | 在线影院 | 幽默笑话 | 源码下载 | Flash MTV | 音乐试听 | 书屋 | 美女写真

  最好的程序员也会犯错误。好程序员和差程序员的区别在于:好程序员能通过测试尽可能的发现错误。你越快测试错误,你就越快发现它们,发现和修正的成本就越低。这解释了为什么只在软件发布前才测试的做法为什么问题那么多。大多数错误根本就没有发现过,修正发现的错误是那么的高,以至于你不得不根据优先级来决定只修正那些错误,因为你根本就承受不起全部修正的费用。

  相比你正在使用的方法,采用PHPUnit进行测试并不是一个全然不同的东西。它们只是方法不同。两者之间的不同在于,检查程序行为是否符合正确是通过一批可以自动测试的代码片断来进行的。这些代码片断叫做单元测试。 在这一部分,我们先基于打印的测试代码进行自动测试。假设我们要测试PHP的内建数组Array。需要测试之一是函数sizeof(),对任何新创建的数组,sizeof()函数应该返回 0。当我们加入一个新数组成员,sizeof()应该返回1。例1显示了我们想测试什么。

  例1. 测试数组和sizeof()

<?php
 $fixture = Array( );
 // $fixture应该为空。

 $fixture[] = "element";
 // $fixture应该包含一个数组成员。
?>

  最简单的测试方法是在加入数组成员前后打印sizeof()的运算结果,如果返回0和1,说明Array和sizeof()运行正常。

  例2. 采用打印语句测试Array和sizeof()

<?php
 $fixture = Array( );
 print sizeof($fixture) . "\n";

 $fixture[] = "element";
 print sizeof($fixture) . "\n";
?>
0
1

  现在,我们让测试程序从需要手工解释变为自动运行。在例3中,我们比较了期望值和实际值,如果相等就打印ok。如果我们发现有的结果不是ok,我们就知道有问题了。

  例3. 比较Array和sizeof()的期望值和实际值

<?php
 $fixture = Array( );
 print sizeof($fixture) == 0 ? "ok\n" : "not ok\n";

 $fixture[] = "element";
 print sizeof($fixture) == 1 ? "ok\n" : "not ok\n";
?>
ok
ok

  我们现在引入一个新的要素,如果期望值和实际值不同,我们就抛出一个异常。这样我们的输出就更简单了。如果测试成功,什么也不做,如果有一个未处理异常,我们知道有问题了。

  例4.使用断言函数来测试Array和sizeof()

<?php
 $fixture = Array( );
 assertTrue(sizeof($fixture) = = 0);

 $fixture[] = "element";
 assertTrue(sizeof($fixture) = = 1);

 function assertTrue($condition) {
  if (!$condition) {
   throw new Exception("Assertion failed.");
  }
 }
?>

  现在测试完全自动化了。和我们第一个版本不同,这个版本使得测试完全自动化了。

  使用自动测试的目的是尽可能少的犯错误。尽管你的代码还不是完美的,用优良的自动测试,你会发现错误会明显减少。自动测试给了你对代码公正的信心。有这个信心,你可以在设计上有大胆的飞越,和你的团队伙伴关系更好,改善你和客户之间的关系,每天安心入睡,因为你可以证明由于你的努力,系统变得更好了。

上一篇:PHPUnit袖珍指南之PHPUnit的目的 下一篇:CSS+DIV设计实例:实现让多个DIV排列时居中
本栏目热门文章
·PHP SOCKET 技术研究 2005-10-4
·用php实现gb2312和unicode间的编码转换 2005-10-4
·实现一个基于Ajax的调查程序 2005-10-31
·WML,Apache,和 PHP 的介绍 2005-10-4
·用php或js获取图片大小,高宽尺寸. 2005-10-8
·LAMPJT最适用的web开发系统详细配置 2005-10-19
·PHP链接ACCESS数据库最简单的方法 2005-10-4
·Access数据库导入Mysql的方法之一 2005-10-4
·GraPHPite--PHP图像库新秀 2005-10-4
·解决RHAS3中Apache2的PHP上传文件大小的限制 2005-10-4
新近更新文章
·PHP5 OOP编程之代理与定制异常 2006-6-20
·PHP5中的this,self和parent关键字详解 2006-6-15
·理解PHP5中static和const关键字 2006-6-15
·利用PHP的OOP特性实现数据保护 2006-6-9
·用 PHPRPC 实现 Ajax 级联下拉菜单 2006-6-9
·基于PHP和AJAX创建RSS聚合器 2006-6-4
·WAP与PHP程序设计之基础篇 2006-6-4
·PHPUnit袖珍指南之命令行测试工具 2006-6-4
·通过PHP和Sajax使用Ajax之JavaScript 2006-6-4
·PHPUnit袖珍指南之安装PHPUnit 2006-6-4
首 页 | 软件发布 | 广告联系 | 下载帮助 | 意见反馈 | 网站地图
  CopyRight? 2002-2004 WWW.SXSKY.NET? All Rights Reserved
三湘时空 站长QQ:82675303 Email: