PHPUnit can';找不到路径,PhpStorm添加了额外的文件夹

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

我正在运行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\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…