【发布时间】:2017-12-10 13:29:09
【问题描述】:
我正在运行 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 的自动完成功能时,它使用带有\Tests\Units 部分的路径。这是它找到的唯一路径,如果我在那里双击它会指向正确的类。然而 PHPUnit 并没有找到它。
这个额外的路径是在哪里添加的?在 PhpStorm 或 Composer 或其他地方?
composer.json 文件包含这个
"autoload": {
"psr-0": {
"": "src/"
}
}
,
"autoload-dev": {
"psr-4": {
"": "src/tests"
}
},
phpunit.xml 文件包含这个
<phpunit bootstrap="app/autoload.php">
【问题讨论】:
-
Phpstorm 扫描所有项目文件。 Phpunit 没有。 Phpunit 使用所有可用的类(当它被执行时),通常是自动加载器。当您通过 Phpunit 运行测试套件时,检查您的项目自动加载器是否可用的 Phpunit 引导。
-
您的 ActionTestCase 在文件系统上的什么位置?
-
@JakubZalas 在
MyApp\MyBundle\Classes\Action\ActionTestCase -
PhpStorm 中项目顶层的完整路径是
src\tests\src\MyApp\MyBundle\Classes\Action\ActionTestCase -
你的 autoload-dev 在 composer.json 中是如何配置的?
标签: phpunit composer-php phpstorm