我正在运行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">
答案 0 :(得分:1)
将测试移出src听起来是一个很好的建议(关于Jakub Zalas comment),你可以更好地说这是否适合你。
无论如何,没有为该路径正确配置开发自动加载器:
"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
后。