当前位置:  开发笔记 > 编程语言 > 正文

IntelliJ IDEA不会运行PHPUnit 4.0测试

如何解决《IntelliJIDEA不会运行PHPUnit4.0测试》经验,为你挑选了1个好方法。

有时,IntelliJ IDEA在运行,调试或显示PHPUnit测试的代码覆盖率方面存在问题.当它生成的类与您拥有的PHPUnit版本不兼容时,可能会发生这种情况.

就我而言,它是IntelliJ IDEA 12.1.6而不是PHPUnit 4.0.14,它始终因此消息而失败:

/usr/bin/php /tmp/ide-phpunit.php --configuration /home/username/Documents/stuff/phpunit.xml.dist
Testing started at 5:32 PM ...
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 /tmp/ide-phpunit.php on line 496
PHP Stack trace:
PHP   1. {main}() /tmp/ide-phpunit.php:0

Process finished with exit code 255

它生成的代码/tmp/ide-phpunit.php不包含PHPUnit 4.x所需的新方法.

事情我已经试过了工作:

手动修复文件并将其标记为只读会导致IntelliJ停止并抱怨它无法替换文件.

设置"run-before"命令以自动修补文件是不够的,因为它似乎不适用于调试或代码覆盖,只能定期运行.

Darien.. 18

我发现的最佳解决方案是通过手动修复来修补IntelliJ安装.这些说明假设Linux路径,但在Windows上应该可以使用相同的基本过程.

找到JAR

首先,php.jar在IntelliJ安装中找到该文件.JAR文件是一种ZIP文件,您可以使用相同的工具打开(并修改)它们.在我的系统上,它出现在:

/home/username/.IntelliJIdea12/config/plugins/php/lib/php.jar

备份php.jar,因为我们要编辑它.

提取模板

使用流行的ZIP文件工具(如7-Zip)打开php.jar,找到里面的compresesd文件:

scripts/phpunit.php

将此文件解压缩到可以编辑它的临时位置.

将方法添加到模板

在文件中,我们需要找到类IDE_PHPUnit_Framework_TestListener,在我的情况下是在线303.在该类中,我们需要添加一个新方法:

public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time){}

完成后保存文件.

使用新模板更新JAR

现在scripts/phpunit.php用新版本覆盖JAR内部.根据您的ZIP工具,这可能就像双击文件以打开它,保存更改并单击确认提示一样简单,但这取决于您使用的是什么.

重启IntelliJ

现在你应该完成!使用PHPUnit运行,调试或生成代码覆盖率数据应该只需单击按钮即可.

请注意,如果您更新PHP插件,它可能会覆盖修复程序,您需要再次重新应用它.



1> Darien..:

我发现的最佳解决方案是通过手动修复来修补IntelliJ安装.这些说明假设Linux路径,但在Windows上应该可以使用相同的基本过程.

找到JAR

首先,php.jar在IntelliJ安装中找到该文件.JAR文件是一种ZIP文件,您可以使用相同的工具打开(并修改)它们.在我的系统上,它出现在:

/home/username/.IntelliJIdea12/config/plugins/php/lib/php.jar

备份php.jar,因为我们要编辑它.

提取模板

使用流行的ZIP文件工具(如7-Zip)打开php.jar,找到里面的compresesd文件:

scripts/phpunit.php

将此文件解压缩到可以编辑它的临时位置.

将方法添加到模板

在文件中,我们需要找到类IDE_PHPUnit_Framework_TestListener,在我的情况下是在线303.在该类中,我们需要添加一个新方法:

public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time){}

完成后保存文件.

使用新模板更新JAR

现在scripts/phpunit.php用新版本覆盖JAR内部.根据您的ZIP工具,这可能就像双击文件以打开它,保存更改并单击确认提示一样简单,但这取决于您使用的是什么.

重启IntelliJ

现在你应该完成!使用PHPUnit运行,调试或生成代码覆盖率数据应该只需单击按钮即可.

请注意,如果您更新PHP插件,它可能会覆盖修复程序,您需要再次重新应用它.


备注:对于Windows上的PhpStorm,``php.jar``位于``{Program Files}\JetBrains\PhpStorm {version}\plugins\php\lib\php.jar``下.
推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有