第 1 章 安装 PHPUnit

注意

如果从旧版本 PHPUnit 升级,请阅读“从 PHPUnit 4.1 升级到 PHPUnit 4.2”一节

需求

PHPUnit 4.2 需要 PHP 5.3.3,强烈推荐使用最新版本的 PHP。

PHPUnit 需要使用以下扩展:domjsonpcrereflection 以及 spl。通常,这些扩展会被一并编译并默认启用。其中的某些甚至是根本无法禁用的。

如果需要支持代码覆盖率分析,需要 Xdebug 2.1.3,强烈推荐使用最新版本的 Xdebug。另外,代码覆盖率分析功能还需要有 tokenizer 扩展才能工作。 如果要将代码覆盖率信息以 XML 格式记录下来,需要有 xmlwriter 扩展。

要以 PHP 档案包(PHAR)方式使用 PHPUnit,需要 phar 扩展。 PHPUnit 的 PHAR 的 --self-update 功能需要 openssl 扩展才能工作。 如果使用了 Suhosin 扩展并同时希望以 PHP 档案包(PHAR)方式使用 PHPUnit,需要配置 suhosin.executor.include.whitelist = phar

PHP 档案包(PHAR)

要获取 PHPUnit,最简单的方法是下载 PHPUnit 的 PHP 档案包(PHAR),它将 PHPUnit 所需要的所有必要组件(以及某些可选组件)捆绑在单个文件中:

wget https://phar.phpunit.de/phpunit.phar 
chmod +x phpunit.phar
mv phpunit.phar /usr/local/bin/phpunit

当然,也可以下载后直接使用这个 PHAR:

wget https://phar.phpunit.de/phpunit.phar
php phpunit.phar

Composer

如果用 Composer 来管理项目的依赖关系,只要在项目的 composer.json 文件中简单地加上对 phpunit/phpunit 的依赖关系即可。下面是一个最小化的 composer.json 文件的例子,只定义了一个对 PHPUnit 4.2 的开发时(development-time)依赖:

{
    "require-dev": {
        "phpunit/phpunit": "4.2.*"
    }
}

要通过 Composer 完成系统级的安装,可以运行:

composer global require "phpunit/phpunit=4.2.*"

请确保 path 变量中包含有 ~/.composer/vendor/bin/

可选的组件包

有以下可选组件包可用:

PHP_Invoker

一个工具类,可以用带有超时限制的方式调用可调用内容。当需要在严格模式下保证测试的超时限制时,这个组件包是必须的。

PHPUnit 的 PHAR 分发中已经包含了此组件包。若要通过 Composer 安装此组件包,添加如下 "require-dev" 依赖项:

"phpunit/php-invoker": "*"
DbUnit

移植到 PHP/PHPUnit 上的 DbUnit 用于提供对数据库交互测试的支持。

PHPUnit 的 PHAR 分发中已经包含了此组件包。若要通过 Composer 安装此组件包,添加如下 "require-dev" 依赖项:

"phpunit/dbunit": ">=1.2"
PHPUnit_Selenium

将 Selenium RC 集成于 PHPUnit。

PHPUnit 的 PHAR 分发中已经包含了此组件包。若要通过 Composer 安装此组件包,添加如下 "require-dev" 依赖项:

"phpunit/phpunit-selenium": ">=1.2"