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

Web*_*net 30 php phpunit unit-testing phpstorm composer-php

当我运行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
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述 为了这个屏幕截图的目的,我暂时改变了这个目录的路径,但它是一个完全有效的路径.

有没有人使用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"
},
Run Code Online (Sandbox Code Playgroud)

Laz*_*One 43

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

目前帮助脚本不支持PHPUnit 3.8或3.9 - 仅3.7及以下.

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

PS
此问题现已修复,修复将在下一个公共EAP版本中提供(比当前的134.1456更新).

  • 不幸的是,它仍然影响IntelliJ IDEA 12.1.6.如果我只能覆盖它生成临时文件的方式...... (2认同)

小智 6

另一个解决方案:Set

"phpunit/phpunit": "3.7"
Run Code Online (Sandbox Code Playgroud)

composer.json中

并运行

composer update 
Run Code Online (Sandbox Code Playgroud)

然后问题就会得到解决.

这对我也有用......

IntelliJ IDEA不会运行PHPUnit 4.0测试


Rag*_*rok 6

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

解决方法直到修复:

  1. 转到/ plugins/php/lib

  2. 备份php.jar

  3. 使用你拥有的任何工具来打开文件,通常是zip或其他压缩工具,或者在ubuntu下使用文件滚轮.

  4. 转到scripts/phpunit.php

  5. 修改它,搜索"IDE_PHPUnit_Framework_TestListener"类并在其中添加以下行:

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

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

编辑/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).