5

PHPUnit 适用于其他项目,但是当我尝试运行 Yii 测试时,我收到以下警告(即使是空测试):

有 1 次失败:

1) 警告

警告:include(PHP_Invoker.php):打开流失败:C:\Users\pumpkin\Documents\GitHub\arhano\codebase\arhanoii\vendor\yiisoft\yii\framework\YiiBase.php 中没有这样的文件或目录423

警告:include():无法打开“PHP_Invoker.php”以包含(include_path='.;C:\Users\pumpkin\Documents\GitHub\arhano\codebase\arhanoii\componen ts;C:\Users\pumpkin\Documents\ GitHub\arhano\codebase\arhanoii\models;C:\xampp\php\PEAR') 在 C:\Users\pumpkin\Documents\GitHub\arhano\codebase\arhanoii\ vendor\yiisoft\yii\framework\YiiBase.php 上第 423 行

看起来我必须安装 phpunit/PHP_Invoker,但这是不可能的,因为它需要 pcntl PHP 扩展,这在 Win 上不可用。

你知道如何消除这个警告吗?是否可以在不使用 PHP_Invoker 的情况下在 Windows 上运行 Yii 测试?

4

5 回答 5

8

这是一个对我有用的解决方案: https ://github.com/yiisoft/yii/issues/1907#issuecomment-14519537

引用:

  • 去 pear.phpunit.de
  • 手动下载 PHP_Invoker 实用程序类
  • 在我女儿的 Mac 上解压缩文件(我正在运行 Windows)
  • 将“Invoker”目录放在 C:\xampp\php\pear\PHP 下
  • 将“Invoker.php”文件放在 C:\xampp\php\pear\PHP 下

我在 Windows 7 机器上,解压缩工作正常。不需要mac...

测试在任何情况下都运行良好,但现在每次测试期间发生错误时,我都不会收到烦人的长“include(PHP_Invoker.php): failed to open stream”消息。

于 2013-03-10T14:37:57.717 回答
1

按照本教程进行一些小的调整对我们有用。

它基本上是在 Invoker 存储库中克隆的。我假设 Invoker 仍然无法工作,但它会阻止 PHPUnit 出错:

{
    "repositories": [
        {
            "type": "composer",
            "url": "http://packages.phundament.com"
        },
        {
            "type": "package",
            "package": {
                "name": "phpunit/php-invoker",
                "version": "1.1.3",
                "source": {
                    "type": "git",
                    "url": "http://github.com/sebastianbergmann/php-invoker",
                    "reference": "master"
                },
                "autoload": {
                    "classmap": [
                        "src/"
                    ]
                }
            }
        }
    ],
    "require-dev": {
        "phpunit/phpunit": "4.1.*",
        "phpunit/phpunit-selenium": "*",
        "phpunit/phpunit-skeleton-generator": "*",
        "phpunit/dbunit": "*",
        "phpunit/phpunit-story": "*",
        "phpunit/php-invoker": "*",
        "phpunit/phpunit-mock-objects": "*"
    }
} 
于 2015-11-19T15:45:02.917 回答
0

该文件是 (PSR-0 compatible) PHP/Invoker.php,因此您需要更改 YiiBase.php 并将 替换为_那里/

于 2013-01-01T08:25:03.843 回答
0

@cweiske:该行实际上由 PHPUnit 的 autoload() 使用,因此无法更改。

@Alex:我在这里遇到了同样的问题,原因是 PHPUnit 的 PHP_Invoker 不适用于 Windows,因为它依赖于一个名为“pcntl”的扩展,该扩展只适用于 UNIX 系统。由于问题来自在 Windows 上运行的第三方框架,我相信 Sebastian Bergmann 不会太在意这个问题:https ://github.com/sebastianbergmann/php-invoker/issues/6

无论如何,测试似乎运行良好。所以...

于 2013-01-09T09:47:54.223 回答
0

对我有用的 phpunit 安装指南(Windows 7,XAMPP): http: //learnyii.blogspot.com/2011/08/how-to-install-phpunit-on-windows.html

在命令提示符中(以管理员身份):

pear channel-update pear.php.net  
pear upgrade-all  
pear channel-discover pear.phpunit.de  
pear channel-discover components.ez.no  
pear channel-discover pear.symfony-project.com  
pear update-channels  
pear install -a -f phpunit/PHPUnit

PS
如果您在使用PHPUnit_Extensions_Selenium_TestCase时遇到错误:

pear install phpunit/PHPUnit_Selenium

如果您收到PHPUnit_Extensions_Story_TestCase错误,请使用:

pear install phpunit/PHPUnit_Story
于 2013-09-20T07:10:22.263 回答