我现在花了好几个小时来设置PhpStorm进行单元测试。无论我做什么,我都会得到这个
Process finished with exit code 1
Cannot find PHPUnit in include path ...
PHPUnit(通过命令行)可以从任何地方访问;我已经设置了正确的包含路径,并将PHPUnit添加到外部库中。没机会。
它是否可能或仅通过PEAR安装?我在这里处理了所有相关问题,我在Mac上,PHPUnit通过CLI顺利运行。
答案 0 :(得分:62)
@ aderuwe的答案有效,但该配置不是每个项目的范围,它适用于所有项目。从PHPStorm 6(实际上甚至是EAP版本PS-126.260
)开始,您可以执行以下操作:
File
- > Settings
- > PHP
- > PHPUNIT
。Use custom loader
,然后从项目供应商目录中输入autoload.php
文件。此自动加载器将自动加载Composer管理的所有依赖项(包括PHPUnit)。phpunit.xml.dist
目录中指定默认配置文件(通常为app
)。
需要每个项目重复,但以下需要一次。
您需要正确配置PHPStorm中的默认值。
Run
- > Edit Configurations...
或只需点击工具栏上的下拉菜单,然后选择Edit Configurations...
。Defaults
- > PHPUnit
Test Scope
下,选择Defined in configuration file
Interpreter options
文字字段为空PHPUnit
(上面Defaults
)并删除其下的所有条目(以便下次对某个特定文件进行测试等时,它会设置一个新文件,但使用新默认)。
答案 1 :(得分:24)
Patrick Visma在http://youtrack.jetbrains.com/issue/WI-13429上发布了解决方案:
在PHPStorm中编辑phpunit.xml的配置,并设置如下的Interpreter选项:
-d auto_prepend_file=/path/to/vendor/autoload.php
答案 2 :(得分:5)
我猜想PhpStorm依赖于在php.ini本身的include_path中找到PHPUnit,而不是你的项目。
您可以尝试将本地项目的vendor / bin目录添加到php.ini的include_path,但最终看起来像PhpStorm可能会受益于支持作曲家安装并运行项目本身的phpunit(如果可用)。实际上他们的跟踪器上有一个问题,所以我建议你登录并提出它:http://youtrack.jetbrains.com/issue/WI-13429
答案 3 :(得分:2)
我想补充一点,当前版本的PHPStorm(7.1)仅适用于以前版本的PHPUnit (3.7)。它无法与4.0及更高版本一起使用。如果您从http://phpunit.de下载了phpunit.phar,则可以通过Settings =>将PHPStorm指向它。 PHP => PHPUnit => phpunit.phar的路径
答案 4 :(得分:1)
PHPStorm有一个自定义的PHPUnit运行脚本( ide-phpunit.php
),它在内部用于处理不同版本的PHPUnit并进行IDE集成,而这只是依赖于包含路径和PEAR
文件夹布局。
要执行此操作:
public static function checkIncludePath()
{
//check include path
$PHPUnitParentDirectory = self::getPHPUnitParentDirectory();
if (is_null($PHPUnitParentDirectory)) {
echo "Cannot find PHPUnit in include path (" . ini_get('include_path') . ")";
exit(IDE_PHPUnit_Loader::FAILURE_EXIT);
}
}
/**
* @return null | string
*/
private static function getPHPUnitParentDirectory()
{
$pathArray = explode(PATH_SEPARATOR, ini_get('include_path'));
foreach ($pathArray as $path)
{
if (file_exists($path . DIRECTORY_SEPARATOR . 'PHPUnit/')) {
return $path;
}
}
return null;
}
您可以通过composer安装它并将其添加为普通可执行文件(ant / phing / native任务),但是您将失去PHPStorm提供的所有闪亮功能,如进度条,跳转到失败的测试和代码覆盖率支持
因此,从代码中可以看出,您需要将名为 PHPUnit
的文件夹添加到包含路径中的某个位置。添加供应商可能对此有所帮助,但请记住在执行此操作时需要匹配大小写。
在PHPStorm支持使用来自composer或phar的PHPUnit之前,我认为你不会更好地集成(http://youtrack.jetbrains.com/issue/WI-13429
)而不是使用它,但黑客攻击你的包含路径可能会有用。
PHPStorm的人对3.7的跑步者做了一些更新,并且通常对PHPUnit的变化做出了很好的响应:)
答案 5 :(得分:1)
我发现如果我拥有所有的“Test”目录,并且在配置文件“Test / phpunit.xml”中定义了测试套件;我可以简单地设置一个“运行配置”,如下所示:
Phpstorm Run |配置对话框