无法在Windows上设置PHPunit与Yii一起使用

时间:2012-12-25 15:53:14

标签: php yii phpunit

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

  

有1次失败:

     

1)警告

     

警告:include(PHP_Invoker.php):无法打开流:没有这样的文件   或目录   C:\用户\南瓜\文件\ GitHub的\ arhano \代码库\ arhanoii \厂商\ yiisoft \ YII \框架\ YiiBase.php   在第423行

     

警告:include():无法打开'PHP_Invoker.php'以包含在内   (include_path中=”; C:\用户\南瓜\文件\ GitHub的\ arhano \代码库\ arhanoii \ componen   TS; C:\用户\南瓜\文件\ GitHub的\ arhano \代码库\ arhanoii \模型; C:\ XAMPP \ PHP \ PEAR')   在C:\ Users \ pumpkin \ Documents \ GitHub \ arhano \ codebase \ arhanoii \   第423行的vendor \ yiisoft \ yii \ framework \ YiiBase.php

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

你知道如何将此警告静音吗?是否可以在不使用PHP_Invoker的情况下在Windows上运行Yii测试?

5 个答案:

答案 0 :(得分: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):无法打开流” 每次在测试期间发生错误时都会显示消息。

答案 1 :(得分:1)

关注this tutorial并进行了一些小调整。

它基本上克隆了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": "*"
    }
} 

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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

答案 4 :(得分: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

P.S。
如果您收到 PHPUnit_Extensions_Selenium_TestCase 的错误,请使用:

pear install phpunit/PHPUnit_Selenium

如果 PHPUnit_Extensions_Story_TestCase 出现错误,请使用:

pear install phpunit/PHPUnit_Story