百度空间 | 百度首页 
 
查看文章
 
重拾PHPUnit
2007年08月20日 星期一 下午 08:35

作者:老王

想想上一次用PHPUnit似乎是一年多以前的事情了,那以后我一直是SimpleTest的忠实粉丝。现在因为工作的需要,不得不重拾PHPUnit,可惜对于它的记忆都已经模糊了,一切都只好从头再来,顺便也笔记一下,免得以后忘记。

以下操作均以Windows操作系统为例:

安装好PHP环境后,先安装PEAR,方法很简单,只要在命令行执行go-pear.bat脚本,一路确定下去就OK了,接下来使用PEAR来安装PHPUnit:

pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit

提示:手动安装PEAR也是一种方法,不过除非网络有问题,否则不推荐手动安装的方式,不然还得自己设定很多东西,容易出错。

然后记得把PEAR的路径添加到include_path中(比如说include_path="C:/php/pear")。

最后修改操作系统PATH环境变量(比如说path=c:/php),

为了更好的效果,推荐给PHP加装Xdebug扩展,相关php.ini修改如下:

[Xdebug]
zend_extension_ts="c:/php/ext/php_xdebug.dll"

xdebug.profiler_enable=on
xdebug.profiler_output_dir="C:/xdebug"
xdebug.trace_output_dir="C:/xdebug"

此扩展并不是必须的,但是有了它,PHPUnit可以测试代码覆盖率,而且在开发阶段配合WinCacheGrind,还能更直观的了解脚本的性能。

到这里,我们的准备工作基本完成了,下面运行一个简单的Demo来检验一下效果:

编辑文件ArrayTest.php:

<?php  
class ArrayTest extends PHPUnit_Framework_TestCase  
{  
     public function
testNewArrayIsEmpty()  
     {  
        
// Create the Array fixture.  
        
$fixture = Array();  
        
// Assert that the size of the Array fixture is 0.  
        
$this->assertEquals(0, sizeof($fixture));  
     }  

     public function
testArrayContainsAnElement()  
     {  
        
// Create the Array fixture.  
        
$fixture = Array();  
        
// Add an element to the Array fixture.  
        
$fixture[] = 'Element';  
        
// Assert that the size of the Array fixture is 1.  
        
$this->assertEquals(1, sizeof($fixture));  
     }  
}  
?>

然后在命令行下运行:phpunit ArrayTest,就可以看到相应的结果了。不过在命令行下敲字母总是让人不爽的,我们可以让这个过程更有趣一些,以EditPlus编辑器为例:

Tools -> Configure User Tools -> Add Tool

然后设定:

Menu Text                  : PHPUnit
Command                    : C:\php\phpunit.bat
Argument                   : $(FileNameNoExt)
InitialDirecotry           : $(FileDir)

搞定了,如果这是你的EditPlus中第一个UserTool的话,那么当你编辑好你的Test类文件后,只要按下Ctrl + 1就可以调出相应的命令行运行界面了。

末了,再唠叨几句,编写测试用例看着是个没啥技术含量的活儿,不过实际有很多讲究,比如说Mock的使用,这些说起来就多了,不说也罢。

相关链接:

PHPUnit官方:http://www.phpunit.de/
PHPUnit文档:http://www.phpunit.de/pocket_guide/3.2/en/index.html

SimpleTest官方:http://simpletest.org/
SimpleTest文档:http://www.lastcraft.com/simple_test.php


类别:Php | 添加到搜藏 | 浏览() | 评论 (14)
 
网友评论:
1
2007年08月21日 星期二 上午 11:21 | 回复
代码覆盖率分析:phpunit --report ./report YourTest
 
2
2007年08月21日 星期二 下午 03:34 | 回复
PHPUnit中Mock的做法是定义一个新的类,继承原来的类,并实现PHPUnit_Framework_MockObject_MockObject接口,大致代码可以参考Mock.php文件。 整个过程主要是通过反射实现,反射很重要啊。
 
4
2007年08月21日 星期二 下午 03:50 | 回复
在PHPUnit中,每个TestCase方法的名字也很重要,这样可以方便的生成textDox文档 比如ArrayTest测试中的public function testNewArrayIsEmpty() 我们在命令行里输入:phpunit --textDox ArrayTest 会输出:New array is empty 正好也从一个侧面反应了DDD理论中释义接口的重要性。
 
5
2007年08月24日 星期五 上午 09:59 | 回复
http://akrabat.com/2007/08/06/yslow/
 
6
2007年08月24日 星期五 下午 10:48 | 回复
set number set expandtab set autowrite set nobackup set nowritebackup set noswapfile set tabstop=4 set shiftwidth=4 set softtabstop=4 colorscheme desert
 
7
2007年08月24日 星期五 下午 11:17 | 回复
vim也能补全代码了(
 
8
2007年08月25日 星期六 下午 09:59 | 回复
/* vim: set expandtab tabstop=4 shiftwidth=4: */
 
9
2007年08月25日 星期六 下午 10:23 | 回复
标签页 :tabnew开新标签,gt在标签间切换;:tabdo命令可以在所有打开的标签页上执行命令。
 
10
2007年08月27日 星期一 下午 02:48 | 回复
vim和phpunit的集成使用: 在vim里编写好单元用例后,键入:!phpunit ClassName
 
11
2007年08月30日 星期四 下午 02:31 | 回复
期待讲解一些mock方面的内容 :)
 
12
2007年09月03日 星期一 上午 11:36 | 回复
set fileencoding=utf-8 set fileencodings=ucs-bom,utf-8,cp936
 
14
2007年09月03日 星期一 下午 09:10 | 回复
echo sprintf('%u', ip2long('202.105.77.179'));
 
15
2007年11月10日 星期六 下午 03:42 | 回复
笔记一下:PEAR安装Symfony pear channel-discover pear.symfony-project.com pear install symfony/symfony
 
16
2008年03月04日 星期二 上午 02:02 | 回复
也同用过phpunit和simpletest的人路过…… 我的路线和楼主差不多,差不多三年多前开始用phpunit。那个时候phpunit2好像刚刚出不久,phpunit热势未退。趁着Kent的TDD书热卖也小火了一把。后来就逐渐看见pear上面放弃维护的声明,甚为惋惜。 约近两年前工作需要开始使用eclipse,那个时候就发现了simpletest的eclipse插件这个好东西,于是一直就用了simpletest。再后来simpletest也入了esayeclipse之for php distro之选。一段时间之后就没有接触测试工作了。 最近又开始捣鼓php测试。重新看了phpunit,惊喜的发现Bergmann最近很积极,升级频繁。反观simpletest久未更新。搜对比文章于是搜到了这里:)并且还搜到了Bergmann自己blog上与simpletest作者的一些对话(也是2005年的老文了) 技术和QA的道路走了很长时间,勾起了我的很多回忆:)欢迎交流
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu