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

Posted

技术标签:

【中文标题】无法在 PHPStorm 的 IDE 中运行单元测试【英文标题】:Unable to run unit tests in PHPStorm's IDE 【发布时间】:2014-02-20 08:38:08 【问题描述】:

当我运行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

为了这个屏幕截图的目的,我暂时更改了这个目录的路径,但它是一个完全有效的路径。

有没有人在使用 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"
,

【问题讨论】:

你运行什么 phpstorm 版本?什么是phpunit版本? @zerkms - 这对我来说是很好的信息...... v7.1.1 ... 那么 PHPUnit 版本 呢? .. 或者我应该只是猜测它是 3.8 吗? @LazyOne 3.9 - 我更新了帖子以显示我的作曲家配置 【参考方案1】:

PhpStorm 在执行 PHPUnit 测试时使用 wrapper/helper 脚本(用于集成目的:监控执行进度、堆栈跟踪等)。

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

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

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

【讨论】:

不幸的是,它仍然会影响 IntelliJ IDEA 12.1.6。如果我能覆盖它生成临时文件的方式... 我刚刚使用 PhpStorm 7.1.3 遇到了这个问题。 PHPUnit 目前是 4.2.0!估计我得降级了。【参考方案2】:

另一种解决方案: 设置

"phpunit/phpunit": "3.7"

composer.json

然后运行

composer update 

那么问题就解决了。

这对我也有用...

IntelliJ IDEA won't run PHPUnit 4.0 tests

【讨论】:

jenkins 遇到了同样的问题。谢谢!【参考方案3】:

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

修复之前的解决方法:

    转到 /plugins/php/lib

    备份php.jar

    使用任何工具打开文件,通常是 zip 或其他压缩工具,或者在 ubuntu 下使用文件滚轮。

    转到scripts/phpunit.php

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

公共函数 addRiskyTest(PHPUnit_Framework_Test $test, 异常 $e, $time) 6.保存文件并更新php.jar

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

编辑 /tmp/ide-phpunit.php 没有帮助,因为它得到 被上面提到的 phpunit.php 文件覆盖。

注意 2:也取决于版本,您可能会找到 php.jar 其他地方:

在此处:转到您的用户主目录 (windows/linux) 并 搜索 vor 一个隐藏目录 .Webide,while 是一个数字 取决于您的 phpstorm 版本(例如 .Webide70)

或者在这里:我认为早期版本的名称类似于 .IntelliJIdea while 是一个取决于您的 phpstorm 版本的数字。

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

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

【讨论】:

以上是关于无法在 PHPStorm 的 IDE 中运行单元测试的主要内容,如果未能解决你的问题,请参考以下文章

如何在 phpstorm 中使用 phalcon-devtools\ide\phpstorm?

phpstorm怎样配置php

量角器:指向默认conf.js文件的PhpStorm IDE

PHP编辑器PhpStrom运行缓慢问题

phpstorm怎么设断点调试

Mac软件PhpStorm 2017.3.2 开发工具免激活下载