PHPUnit学习01---Linux配置PHPUnit
文章目的
此文章总结本人在Linux系统上手动配置PHPUnit的过程,现在将此过程总结归纳作为个人的备忘录,同时也希望给那些被迫需要手动配置PHPUnit的同学提供帮助。
PHPUnit官方提供简洁的Pear在线安装,但是由于公司内部网络原因,无法使用,不得不使用手动配置。手动配置虽然麻烦,但是在整个配置过程中,可以了解PHPUnit的目录结构,对于以后深入的学习和使用PHPUnit不无益处。
如何配置
配置开始前,首先设置一些符号
- $PHP_HOME PHP安装目录
- $PHPUNIT_HOME PHPUnit安装目录
配置过程如下:
1. 下载phpunit源代码,目前最新版本为3.5,但是不太稳定,建议使用稳定的3.4版本,下载地址:http://pear.phpunit.de/
2. 解压PHPUnit到机器任意目录,个人建议解压到$PHP_HOME/lib目录下,这样便于管理所有的第三方php库。假设已经解压后的$PHPUNIT_HOME设为$PHP_HOME/lib/PHPUnit-3.4.10。
3. 修改$PHPUNIT_HOME /phpunit.php文件,如下所示:
修改前 |
修改后 |
上面的代码中,被修改的地方由红色高亮显示,修改内容主要是去除了if判断语句,直接执行if内部的语句,具体原因见下节分析。
4. 将$PHPUNIT_HOME/ phpunit.php文件名称修改为$PHPUNIT_HOME/ phpunit。
5. 设置环境变量PATH,将目录$PHPUNIT_HOME/添加到PATH中。比如,可以修改~/.bashrc文件,然后source ~/.bashrc使修改生效,修改后的~/.bashrc文件如下:
配置完成,是不是很简单!
验证PHPUnit
配置PHPUnit后,可以在任意目录下输入phpunit命令,如下所示:
出现了上面的提示,说明你的phpunit就配置好了,接下来,可以通过一段示例代码,体验phpunit的功能。StackTest.php如下所示:
<?php class StackTest extends PHPUnit_Framework_TestCase { public function testPushAndPop() { $stack = array(); $this->assertEquals(0, count($stack)); array_push($stack, 'foo'); $this->assertEquals('foo', $stack[count($stack)-1]); $this->assertEquals(1, count($stack)); $this->assertEquals('foo', array_pop($stack)); $this->assertEquals(0, count($stack)); } } ?> |
保存好StackTest.php后,在命令行输入phpunit StackTest.php,就可以运行phpunit,进行单元测试,如下所示:
这样,你的第一个PHPUnit单元测试就执行成功了,该测试用的5个断言全部通过。
配置分析
这里需要分析一下配置过程中的第3步——修改phpunit代码。此处将if出去,直接执行if内部的语句“set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path());”,此段代码是将$PHPUNIT_HOME目录临时添加到php.ini文件中的“include_path”字段的值中,这样php程序就可以查找到所有phpunit相关的文件。如果不执行第3步的修改,if语句中的条件有可能为false,导致没有设置php.ini的include_path,那么执行phpunit时,php无法找到其他相关文件,就会报告类似“require_once无法找到文件…”的错误。
配置过程的第4,5步是为了使得linux系统可以识别phpunit命令,这样就可以在linux的任意目录下执行phpunit命令。
总结
虽然php配置只有几步,但是对于我这个php菜鸟来说还是费了一些功夫的。不过现在清楚了配置过的原理,这些时间还是值得的。
参考文献