PHPUnit can';找不到路径,PhpStorm添加了额外的文件夹
我正在运行phpunit,它给了我一个错误PHPUnit can';找不到路径,PhpStorm添加了额外的文件夹,phpunit,composer-php,phpstorm,Phpunit,Composer Php,Phpstorm,我正在运行phpunit,它给了我一个错误 PHP Fatal error: Class 'MyApp\MyBundle\Tests\Units\Classes\Action\ActionTestCase' not found in /var/www/src/tests/src/MyApp/MyBundle/Classes/Action/KeywordTest.php on line 7 在那个班是 5 use MyApp\MyBundle\Tests\Units\Classes\Actio
PHP Fatal error: Class 'MyApp\MyBundle\Tests\Units\Classes\Action\ActionTestCase' not found in /var/www/src/tests/src/MyApp/MyBundle/Classes/Action/KeywordTest.php on line 7
在那个班是
5 use MyApp\MyBundle\Tests\Units\Classes\Action\ActionTestCase as TestCase;
6
7 class KeywordTest extends TestCase {
我不明白的是,ActionTestCase
存在,但是在MyApp\MyBundle\Classes\Action\ActionTestCase
当我使用PhpStorm的autocomplete函数时,它使用带有\Tests\Units
部分的路径。这是它找到的唯一路径,如果我在其中双击,它将指向正确的类。然而,菲普尼特没有找到它
在哪里添加此额外路径?在PhpStorm或Composer或其他地方
composer.json文件包含以下内容
"autoload": {
"psr-0": {
"": "src/"
}
}
,
"autoload-dev": {
"psr-4": {
"": "src/tests"
}
},
<phpunit bootstrap="app/autoload.php">
phpunit.xml文件包括以下内容
"autoload": {
"psr-0": {
"": "src/"
}
}
,
"autoload-dev": {
"psr-4": {
"": "src/tests"
}
},
<phpunit bootstrap="app/autoload.php">
将测试移出src听起来是个不错的建议(关于),您可以更好地说这是否是您的选择 不管怎样,dev autoloader没有为该路径正确配置:
"autoload-dev": {
"psr-4": {
"": "src/tests"
}
},
我会找文件的
src\tests\MyApp\MyBundle\Classes\Action\ActionTestCase.php
但是你的档案在
src\tests\src\MyApp\MyBundle\Classes\Action\ActionTestCase.php
^^^
添加缺少的src/
部件应能使其正常工作:
"autoload-dev": {
"psr-4": {
"": "src/tests/src/"
}
},
不要忘记再次转储自动加载:
composer dump-autoload
更改
composer.json
后,Phpstorm将扫描所有项目文件。Phpunit没有。Phpunit使用所有可用的类(在执行时),通常是自动加载程序。通过Phpunit运行测试套件时,请检查Phpunit引导程序,确保您的项目自动加载程序可用。ActionTestCase在文件系统上的位置?@JakubZalas位于MyApp\MyBundle\Classes\Action\ActionTestCase
PhpStorm中项目顶层的完整路径为src\tests\src\MyApp\MyBundle\Classes\Action\ActionTestCase
您的自动加载开发程序是如何在composer.json中配置的?谢谢,我以前从未尝试过转储自动加载。我尝试了这个,它仍然给我类发现的错误。问题是,其他文件夹中的测试确实有效,因此我认为问题来自于在这个特定情况下发现的\tests\Units部分-我不知道在autocomplete上插入的位置或原因。我将尝试将测试从src中移出到它自己的文件夹中,但我怀疑这与此无关,因为它适用于其他测试类。是的,我将测试移动到与src相同的级别,更改了composer文件并转储autoload,它给了我找不到的同一个类。不知道您有正在工作的自动加载测试(真的吗?或者这些文件只是包含在内,不需要自动加载器…)在相同的名称空间和目录中。可能只是对配置的误解,dump autoload in composer会重新创建composer的autoloader,例如,当您更改autoloader的composer.json时。不确定发生了什么,但它现在似乎可以工作。现在,当我使用PHPStorm的auto complete时,它会找到位置tests\src\MyApp\MyBundle…