[英]PhpStorm: Class 'PhpUnit\Framework\TestCase' not found (composer / autoload)
[英]PHPUnit via Composer and PhpStorm
我現在花了幾個小時來設置 PhpStorm 進行單元測試。 無論我做什么,我都明白
Process finished with exit code 1
Cannot find PHPUnit in include path ...
PHPUnit 可以(通過命令行)從任何地方訪問; 我已經設置了正確的包含路徑並將 PHPUnit 添加到外部庫中。 沒有機會。
完全有可能還是只能通過 PEAR 安裝? 我已經在這里解決了所有相關問題,我在 Mac 上,PHPUnit 通過 CLI 順利運行。
@ aderuwe的答案有效,但該配置不是每個項目的范圍,它適用於所有項目。 從PHPStorm 6(實際上甚至是EAP版本PS-126.260
)開始,您可以執行以下操作:
File
- > Settings
- > PHP
- > PHPUNIT
。 Use custom loader
,然后從項目供應商目錄中輸入autoload.php
文件。 此自動加載器將自動加載Composer管理的所有依賴項(包括PHPUnit)。 app
目錄中的phpunit.xml.dist
)。 需要每個項目進行重復 ,但下面需要做一次 。
您需要正確配置PHPStorm中的默認值。
Run
- > Edit Configurations...
或只需單擊工具欄上的下拉菜單,然后選擇Edit Configurations...
Defaults
- > PHPUnit
Test Scope
,選擇“ Defined in configuration file
Interpreter options
文本字段為空 PHPUnit
( Defaults
以上)並刪除其下的任何條目(以便下次對特定文件進行測試等時,它將設置一個新的但使用新的默認值)。 Patrick Visma在http://youtrack.jetbrains.com/issue/WI-13429上發布了解決方案:
在PHPStorm中編輯phpunit.xml的配置,並設置如下的Interpreter選項:
-d auto_prepend_file=/path/to/vendor/autoload.php
我猜想PhpStorm依賴於在php.ini本身的include_path中找到PHPUnit,而不是你的項目。
您可以嘗試將本地項目的vendor / bin目錄添加到php.ini的include_path,但最終看起來像PhpStorm可能會受益於支持作曲家安裝並運行項目本身的phpunit(如果可用)。 實際上他們的跟蹤器上有一個問題,所以我建議您登錄並提升它:http: //youtrack.jetbrains.com/issue/WI-13429
我想補充一點,當前版本的PHPStorm(7.1)僅適用於以前版本的PHPUnit (3.7)。 它無法與4.0及更高版本一起使用。 如果您從http://phpunit.de下載了phpunit.phar,可以通過Settings => PHP => PHPUnit => phpunit.phar的路徑將PHPStorm指向它
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我不認為你會從pear中使用它來獲得更好的集成( http://youtrack.jetbrains.com/issue/WI-13429
)但是你的包含路徑的黑客可能會解決。
PHPStorm的人在3.7的跑步者上做了一些更新,並且通常對PHPUnit的變化做出很好的響應:)
我發現如果我擁有所有的“Test”目錄,並且在配置文件“Test / phpunit.xml”中定義了測試套件; 我可以簡單地設置一個“運行配置”,如下所示:
Phpstorm Run |配置對話框
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.