欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【PHPUnit袖珍指南之自动测试】,下面是详细的分享!
PHPUnit袖珍指南之自动测试
最好的程序员也会犯错误。好程序员和差程序员的区别在于:好程序员能通过测试尽可能的发现错误。你越快测试错误,你就越快发现它们,发现和修正的成本就越低。这解释了为什么只在软件发布前才测试的做法为什么问题那么多。大多数错误根本就没有发现过,修正发现的错误是那么的高,以至于你不得不根据优先级来决定只修正那些错误,因为你根本就承受不起全部修正的费用。相比你正在使用的方法,采用PHPUnit进行测试并不是一个全然不同的东西。它们只是方法不同。两者之间的不同在于,检查程序行为是否符合正确是通过一批可以自动测试的代码片断来进行的。这些代码片断叫做单元测试。在这一部分,我们先基于打印的测试代码进行自动测试。假设我们要测试PHP的内建数组Array。需要测试之一是函数sizeof(),对任何新创建的数组,sizeof()函数应该返回0。当我们加入一个新数组成员,sizeof()应该返回1。例1显示了我们想测试什么。
例1.测试数组和sizeof()
$fixture=Array();
//$fixture应该为空。
$fixture[]="element";
//$fixture应该包含一个数组成员。
?>
最简单的测试方法是在加入数组成员前后打印sizeof()的运算结果,如果返回0和1,说明Array和sizeof()运行正常。
例2.采用打印语句测试Array和sizeof()
$fixture=Array();
printsizeof($fixture)."\n";
$fixture[]="element";
printsizeof($fixture)."\n";
?>
0
1
现在,我们让测试程序从需要手工解释变为自动运行。在例3中,我们比较了期望值和实际值,如果相等就打印ok。如果我们发现有的结果不是ok,我们就知道有问题了。
例3.比较Array和sizeof()的期望值和实际值
$fixture=Array();
printsizeof($fixture)==0?"ok\n":"notok\n";
$fixture[]="element";
printsizeof($fixture)==1?"ok\n":"notok\n";
?>
ok
ok
我们现在引入一个新的要素,如果期望值和实际值不同,我们就抛出一个异常。这样我们的输出就更简单了。如果测试成功,什么也不做,如果有一个未处理异常,我们知道有问题了。
例4.使用断言函数来测试Array和sizeof()
$fixture=Array();
assertTrue(sizeof($fixture)==0);
$fixture[]="element";
assertTrue(sizeof($fixture)==1);
functionassertTrue($condition){
if(!$condition){
thrownewException("Assertionfailed.");
}
}
?>
现在测试完全自动化了。和我们第一个版本不同,这个版本使得测试完全自动化了。
使用自动测试的目的是尽可能少的犯错误。尽管你的代码还不是完美的,用优良的自动测试,你会发现错误会明显减少。自动测试给了你对代码公正的信心。有这个信心,你可以在设计上有大胆的飞越,和你的团队伙伴关系更好,改善你和客户之间的关系,每天安心入睡,因为你可以证明由于你的努力,系统变得更好了。
以上所分享的是关于PHPUnit袖珍指南之自动测试,下面是编辑为你推荐的有价值的用户互动:
相关问题:如何用phpunit进行数据库测试
答:通常的测试用例继承自PHPUnit_Framework_TestCase类,其中的每个测试都以test开头,而且声明为公共类型public。每个测试用例都有一个构建方法setUp()和拆除方法tearDown(),分别在每个测试执行之前和之后执行,这两个方法都声明为被保护类型 pro... >>详细
相关问题:[探讨]Facebook是如何做自动化测试的?
答:” 引发了开发者们的激烈讨论。来自Facebook的Steven Grimm很好地回答了这个问题,觉得还不错,这里以第一人称翻译了一下。对于PHP的代码,我们写了非常多的基于PHPUnit测试框架的测试类,这些测试类覆盖范围比较大,从简单的判读真假的单元测试... >>详细
相关问题:phpunit测试 只出现PHPUnit 3.5.4 by Sebastian Be...
答:PHPUnit可以通过PHP扩展和程序库(PEAE)获得。PEAR是可重用PHP组件的框架和分发系统。安装PHPUnit可以通过PEAR安装程序命令获得: pear install PHPUnit2 根据PEAR的版本命名标准,适用于PHP5的PHPUnit包称为PHPUnit2。PHPUnit是适用于PHP4的包... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
