我想:
- 无论我的环境如何(以及是否安装了 PHPUnit 或 PEAR),都使用 PHPUnit 运行测试
- 如果可能,在屏幕上显示测试结果
我怎样才能做到这一点?我尝试在这里下载代码并包括在内Autoload.php
,但它仍然有一些依赖项。也许有一些比尝试将它与我的代码捆绑在一起更好的方法......?
我想:
我怎样才能做到这一点?我尝试在这里下载代码并包括在内Autoload.php
,但它仍然有一些依赖项。也许有一些比尝试将它与我的代码捆绑在一起更好的方法......?
要将 PHPUnit 包含在您的项目源文件中,我建议您遵循指南:
Using PHPUnit From a Git Checkout
来自 PHPUnit 贡献部分。
它告诉您需要安装的所有包,并显示您为 phpunit 可执行文件构建运行器/包装器脚本。
#!/bin/bash
php -d include_path='.:../phpunit/:../dbunit/:../php-code-coverage/:../php-file-iterator/:../php-invoker/:../php-text-template/:../php-timer:../php-token-stream:../phpunit-mock-objects/:../phpunit-selenium/:../phpunit-story/:/usr/local/lib/php' ../phpunit/phpunit.php $*
您可以根据需要调整路径,或者如果您想将其包装在另一个脚本中,您也可以通过编程方式使用 phpunit
require '/path/to/phpunit/PHPUnit/Autoload.php';
PHPUnit_TextUI_Command::main();
这假设您有一个phpunit.xml.dist
文件,或者您在调用包装脚本时使用了正确的 cli 参数。
您还可以使用 pear 包并解压所有稳定版本,而不是使用 git checkout 来节省一些磁盘和 repo 空间。包装脚本和所有包含路径的工作是相同的 :)
相关的SO问题:
依赖项将取决于您使用的附加组件,PHPUnit 本身应该是自包含的。由于 PHP 没有特别一致的包管理解决方案(并且除了轮子改造之外,您已经消除了最可行的选项),您最好的选择是将文件包含在与应用程序代码分开的源代码树中。从您的 APPLICATION_ROOT 或类似目录创建一个名为“test”的同级目录,并且该目录具有一个充满 PHPUnit 的“lib”或类似目录以及您需要的任何依赖项,这可能是一个不错的计划。从测试目录到主应用程序源不应该有重叠和单向依赖。
我假设您正在寻找一个运行状况检查自动化测试页面,因此您可以创建包含该测试目录所需内容的单个页面。理想情况下,如果您有暴露静态资源的 web 目录,您可以拥有负责加载应用程序前端控制器的 PHP 文件,方法是从文档根目录外部包含应用程序文件夹,然后再加载第二个文件测试套件。这将允许您的应用程序目录继续专注于应用程序代码本身、存放测试代码的测试目录,然后是负责加载代码库的 2 个小包含文件(带有任何类型的共享常量定义等)。也提取并保持干燥)。
PHP 有一个一致的包管理解决方案 - http://getComposer.org。它现在还可以以通常的作曲家风格安装 PHPunit,http ://packagist.org/packages/phpunit/phpunit
安装软件后,它会将 phpunit 命令行脚本放入本地的 'bin/' 目录中,因此您可以调用它,但您可能希望有一个 shell 脚本来设置它将使用的配置文件。
通常的设置是一个 tests/ 子目录,其中包含运行实际测试的 PHPunit 扩展类的层次结构。