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文件,如下所示:

#!/usr/bin/env php

<?php

/*

* 此处省去注释~~~~

*/

if (extension_loaded('xdebug')) {

ini_set('xdebug.show_exception_trace', 0);

}

if (strpos('@php_bin@', '@php_bin') === 0) {

set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path());

}

require_once 'PHPUnit/Util/Filter.php';

PHPUnit_Util_Filter::addFileToFilter(__FILE__, 'PHPUNIT');

require 'PHPUnit/TextUI/Command.php';

define('PHPUnit_MAIN_METHOD', 'PHPUnit_TextUI_Command::main');

PHPUnit_TextUI_Command::main();

?>

修改前

#!/usr/bin/env php

<?php

/*

* 此处省去注释~~~~

*/

if (extension_loaded('xdebug')) {

ini_set('xdebug.show_exception_trace', 0);

}

set_include_path(dirname(__FILE__) . PATH_SEPARATOR . get_include_path());

require_once 'PHPUnit/Util/Filter.php';

PHPUnit_Util_Filter::addFileToFilter(__FILE__, 'PHPUNIT');

require 'PHPUnit/TextUI/Command.php';

define('PHPUnit_MAIN_METHOD', 'PHPUnit_TextUI_Command::main');

PHPUnit_TextUI_Command::main();

?>

修改后

上面的代码中,被修改的地方由红色高亮显示,修改内容主要是去除了if判断语句,直接执行if内部的语句,具体原因见下节分析。

4. 将$PHPUNIT_HOME/ phpunit.php文件名称修改为$PHPUNIT_HOME/ phpunit。

5. 设置环境变量PATH,将目录$PHPUNIT_HOME/添加到PATH中。比如,可以修改~/.bashrc文件,然后source ~/.bashrc使修改生效,修改后的~/.bashrc文件如下:

clip_image002

配置完成,是不是很简单!

 

验证PHPUnit

配置PHPUnit后,可以在任意目录下输入phpunit命令,如下所示:

clip_image004

出现了上面的提示,说明你的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,进行单元测试,如下所示:

clip_image006

这样,你的第一个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菜鸟来说还是费了一些功夫的。不过现在清楚了配置过的原理,这些时间还是值得的。

 

参考文献

posted @ 2012-04-14 16:33  bourneli  阅读(3956)  评论(0编辑  收藏  举报