【问题标题】:Using PHPUnit as Symfony 2 dependency使用 PHPUnit 作为 Symfony 2 的依赖
【发布时间】:2012-12-19 21:53:11
【问题描述】:

我想使用 PHPUnit 来测试我的 Symfony 2 应用程序。我将 PHPUnit 添加到我的 Symfony 2 项目 composer.json 文件中,如 documentation 中所述:

"require": {
        ...
        "phpunit/phpunit": "3.7.*"
    },

我现在如何调用 PHPUnit 来运行测试?我试图通过

运行它
$ php /path/to/symfony2app/vendor/phpunit/phpunit.php

但我收到以下错误消息:

Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in C:\...\vendor\phpunit\phpunit\PHPUnit\Autoload.php on line 45

Fatal error: require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.;\...\xampp\php\PEAR') in C:\...\vendor\phpunit\phpunit\PHPUnit\Autoload.php on line 45

我猜这是缺少 PEAR 的问题,但 PEAR 不应该是 PHPUnit 中的依赖项并通过 composer update 安装吗?

【问题讨论】:

  • 就像一个注释:通常你想要“require-dev” phpunit,因为你不想在生产中安装它(如果你通过 composer 安装)或者如果你是一个 lib/module/捆绑你不想让其他人安装 phpunit。

标签: symfony cygwin phpunit composer-php


【解决方案1】:

Composer 创建对其安装在所谓的“bin-dir”中的软件包的二进制文件(可执行脚本)的引用。默认情况下,它位于vendor/bin/,因此您可以这样运行它:php vendor/bin/phpunit。你通常也可以直接调用vendor/bin/phpunit,它应该知道用php执行它。

在 Cygwin 下可能需要直接调用 .bat 文件,如 vendor/bin/phpunit.bat

如果您希望它更易于访问,可以将其添加到您的 composer.json:

    "config": { 
        "bin-dir": "bin"
    }

然后该文件将可以在您的项目中以bin/phpunit 的形式访问,更短且隐藏更少。

请注意,这些都不是 cygwin 特定的,它在常规 windows cmd 和本机 unix 环境下也应该可以正常工作。

【讨论】:

  • 感谢您的精彩回答!在 Mac OS 10.8 上,我可以像您所说的那样通过 vendor/bin/phpunit 调用它,但在使用 Cygwin 的 Windows 上,我收到错误 Could not open input file: /.../vendor/phpunit/phpunit/composer/bin/phpunit,但通过 $ vendor/bin/phpunit.bat 调用 PHPUnit 就可以了。知道为什么吗?
  • 可能是 cygwin 的路径解析问题。我知道它适用于 gitbash 和 msys/mingw shell,因为这是我使用的,但 cygwin 倾向于对路径做更多的黑客攻击。
  • 那么也许只是在答案中添加一个注释,即使用 .bat 文件是使用 cygwin 的方式。我将编辑问题的标题,因为您的回答也适用于其他系统。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-13
  • 2016-02-17
  • 2017-01-23
  • 2012-04-25
  • 1970-01-01
相关资源
最近更新 更多