要获取 PHPUnit,最简单的方法是下载 PHPUnit 的 PHP 档案包(PHAR),它将 PHPUnit 所需要的所有依赖组件(包括某些可选的组件)捆绑在单个文件中:
wget https://phar.phpunit.de/phpunit.phar chmod +x phpunit.pharmv phpunit.phar /usr/local/bin/phpunit
当然,你也可以下载后直接使用这个 PHAR:
wget https://phar.phpunit.de/phpunit.pharphp phpunit.phar
如果你用 Composer 来管理项目的依赖关系,只需要简单的在项目的 composer.json
文件中加上一个对 phpunit/phpunit
的依赖关系即可。下面是一个最小化的 composer.json
文件的例子,只定义了一个对 PHPUnit 4.0 的开发时(development-time)依赖:
{ "require-dev": { "phpunit/phpunit": "4.0.*" }}
要通过 Composer 完成系统级的安装,可以运行:
composer global require 'phpunit/phpunit=4.0.*'
请确保 path 变量中包含有 ~/.composer/vendor/bin/
。
使用 PEAR 安装程序来安装 PHPUnit 只需要执行以下两个指令(可能需要以 root
权限运行):
pear config-set auto_discover 1pear install pear.phpunit.de/PHPUnit
根据你的操作系统版本与PHP环境的具体情况,有可能需要先安装 PEAR 或者更新已安装的 PEAR 之后才能按照这里的指南来操作。
一般用 sudo pear upgrade PEAR
就能完成对已安装 PEAR 的升级。PEAR 手册则解说了如何对 PEAR 进行全新安装。
有以下可选组件包可用:
DbUnit
移植到 PHP/PHPUnit 上的 DbUnit 用于提供对数据库交互测试的支持。
若要通过 PEAR 安装此组件包,使用如下指令:
pear install phpunit/DbUnit
若要通过 Composer 安装此组件包,添加如下 "require-dev"
依赖项:
"phpunit/dbunit": ">=1.2"
PHP_Invoker
一个工具类,可以用带有超时限制的方式调用可调用内容。当需要在严格模式下保证测试的超时限制时,这个组件包是必须的。
要安装此组件包,使用如下指令:
pear install phpunit/PHP_Invoker
若要通过 Composer 安装此组件包,添加如下 "require-dev"
依赖项:
"phpunit/php-invoker": "*"
PHPUnit_Selenium
将 Selenium RC 集成于 PHPUnit。
若要通过 PEAR 安装此组件包,使用如下指令:
pear install phpunit/PHPUnit_Selenium
若要通过 Composer 安装此组件包,添加如下 "require-dev"
依赖项:
"phpunit/phpunit-selenium": ">=1.2"
PHPUnit_Story
使用PHPUnit进行行为驱动开发时所使用的基于故事的测试运行器。
若要通过 PEAR 安装此组件包,使用如下指令:
pear install phpunit/PHPUnit_Story
若要通过 Composer 安装此组件包,添加如下 "require-dev"
依赖项:
"phpunit/phpunit-story": "*"
PHPUnit_SkeletonGenerator
一个工具,用于从成品代码类中生成骨架测试类,或反之。
要安装此组件包,使用如下指令:
pear install phpunit/PHPUnit_SkeletonGenerator
PHPUnit_TestListener_DBUS
一个发送事件给 DBUS 的测试监听器(TestListener)。
要安装此组件包,使用如下指令:
pear install phpunit/PHPUnit_TestListener_DBUS
PHPUnit_TestListener_XHProf
一个利用 XHProf 来对测试的代码进行自动性能剖析的测试监听器(TestListener)。
要安装此组件包,使用如下指令:
pear install phpunit/PHPUnit_TestListener_XHProf
PHPUnit_TicketListener_Fogbugz
一个与Fogbugz系统的问题API交互的任务单(ticket)监听器。
要安装此组件包,使用如下指令:
pear install phpunit/PHPUnit_TicketListener_Fogbugz
PHPUnit_TicketListener_GitHub
一个与GitHub系统的问题API交互的任务单(ticket)监听器。
要安装此组件包,使用如下指令:
pear install phpunit/PHPUnit_TicketListener_GitHub
PHPUnit_TicketListener_GoogleCode
一个与Google Code系统的问题API交互的任务单(ticket)监听器。
要安装此组件包,使用如下指令:
pear install phpunit/PHPUnit_TicketListener_GoogleCode
PHPUnit_TicketListener_Trac
一个与Trac系统的问题API交互的任务单(ticket)监听器。
要安装此组件包,使用如下指令:
pear install phpunit/PHPUnit_TicketListener_Trac
使用方法
安装好之后进入到我们测试的根目录test目录下,输入phpunit,如果安装成功,会出现使用说明:
当然,很多情况输入phpunit,会显示command not found. 别急,解决方法:
输入命令:
pear config-get bin_dir
会提示出我们安装后执行文件所在的目录,记下这个地址,将其加入到系统的环境变量中:
export PATH=<dir you got from pear config-get>:$PATH
再次输入phpunit会成功显示上面的信息。
测试用例写法
下面我们来用一个例子说明具体如何将phpunit投入实际开发中,在test文件夹下新建一个test.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));
}
?>
此部分收集了从 PHPUnit 3.7 升级到 PHPUnit 4.0 时可能遭遇的一些小的向后兼容问题。
升级应当是十分简单且不会遭遇任何问题的,因为这个过程已经针对所有主要的开源框架进行过测试并且不存在任何问题。但是每个项目毕竟是各有不同的,如果你已经尝试了某个候选发布版本并且遭遇到了问题,本文档也许能提供一些帮助。