无法在PHPStorm的IDE中运行单元测试

时间:2014-01-28 20:18:02

标签: php unit-testing phpunit composer-php phpstorm

当我运行vendor/bin/phpunit时,我的测试全部成功运行。但是,当我右键单击测试文件并单击“运行测试”时,我最终会看到:

/usr/local/bin/php -dxdebug.coverage_enable=1 /private/var/folders/bj/t2w187x158g7rgghctgknwb80000gn/T/ide-phpunit.php --coverage-clover /Users/bkuhl/Library/Caches/WebIde70/coverage/services$tests.coverage --no-configuration /Users/bkuhl/Projects/myproject/services/app/tests
Testing started at 3:09 PM ...

Fatal error: Class IDE_PHPUnit_Framework_TestListener contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (PHPUnit_Framework_TestListener::addRiskyTest) in /private/var/folders/bj/t2w187x158g7rgghctgknwb80000gn/T/ide-phpunit.php on line 504
PHP Fatal error:  Class IDE_PHPUnit_Framework_TestListener contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (PHPUnit_Framework_TestListener::addRiskyTest) in /private/var/folders/bj/t2w187x158g7rgghctgknwb80000gn/T/ide-phpunit.php on line 504
Call Stack:
    0.0008     340040   1. {main}() /private/var/folders/bj/t2w187x158g7rgghctgknwb80000gn/T/ide-phpunit.php:0

PHP Stack trace:
PHP   1. {main}() /private/var/folders/bj/t2w187x158g7rgghctgknwb80000gn/T/ide-phpunit.php:0

Process finished with exit code 255

我已将PHPStorm配置为使用path/to/vendor/autoload.php

enter image description here 为了这个屏幕截图的目的,我暂时改变了这个目录的路径,但它是一个非常有效的路径。

有没有人使用PHPStorm运行测试的能力遇到问题?

composer.json:

"require-dev": {
    "way/generators": "dev-master",
    "way/laravel-test-helpers": "dev-master",
    "mockery/mockery": "*",
    "codeception/aspect-mock": "*",
    "phpunit/phpunit": "3.9.*@dev"
},

3 个答案:

答案 0 :(得分:43)

PhpStorm在执行PHPUnit测试时使用包装器/帮助器脚本(用于集成目的:监视执行进度,堆栈跟踪等)。

目前,助手脚本不支持PHPUnit 3.8或3.9 - 仅3.7及以下。

对应的票证:http://youtrack.jetbrains.com/issue/WI-21666 - 观看它(星号/投票/评论)以便在解决时得到通知。

<强> P.S。
此问题现已修复,修复程序将在下一个公共EAP版本中提供(比当前的134.1456更新)。

答案 1 :(得分:6)

另一个解决方案: 设置

"phpunit/phpunit": "3.7"
composer.json

中的

并运行

composer update 

然后问题就会得到解决。

这也适合我...

IntelliJ IDEA won't run PHPUnit 4.0 tests

答案 2 :(得分:6)

一些名为 andriy komm 的用户根据在故障单线程(http://youtrack.jetbrains.com/issue/WI-21666)中的IDE手动修复php插件添加了解决方案:

  

解决方法直到修复:

     
      
  1. 转到/ plugins / php / lib

  2.   
  3. 备份php.jar

  4.   
  5. 使用您拥有的任何工具打开文件,通常是拉链或其他压缩工具,或者使用ubuntu文件辊。

  6.   
  7. 转到scripts / phpunit.php

  8.   
  9. 修改它,搜索“IDE_PHPUnit_Framework_TestListener”类并在其中添加以下行:

  10.         

    public function addRiskyTest(PHPUnit_Framework_Test $ test,Exception   $ e,$ time){}   6.保存文件并更新php.jar

         

    注意1:根据您使用的操作系统和工具,您可能需要解压缩   .jar修改并再次将其压缩回jar。使用文件   在ubuntu上滚动我可以跳过这一步,编辑文件并更新   罐子直接。

         

    编辑/tmp/ide-phpunit.php没有帮助,因为它得到了   由phpunit.php文件覆盖,我在上面提到过。

         

    注意2:另外,根据版本,您可能会找到php.jar   别处:

         

    在这里:转到您的用户主目录(windows / linux)和   搜索隐藏目录.Webide,同时是一个数字   取决于你的phpstorm版本(例如G. .Webide70)

         

    或者在这里:我认为早期版本被命名为.IntelliJIdea   虽然是一个数字取决于你的phpstorm版本。

         

    使用相同的路径(/ plugins / php / lib)

为我工作(Windows 7,PHPStorm 7,#PS-133.982)。