我正在运行phpunit,它给了我一个错误
PHP Fatal error: Class 'MyAppMyBundleTestsUnitsClassesActionActionTestCase' not found in /var/www/src/tests/src/MyApp/MyBundle/Classes/Action/KeywordTest.php on line 7
在该类中是
5 use MyAppMyBundleTestsUnitsClassesActionActionTestCase as TestCase;
6
7 class KeywordTest extends TestCase {
我无法理解的是,ActionTestCase
存在,但MyAppMyBundleClassesActionActionTestCase
当我使用 PhpStorm 的自动完成功能时,它使用带有TestsUnits
部分的路径。这是它找到的唯一路径,如果我双击那里,它会定向到正确的类。然而PHPUnit没有找到它。
这个额外的路径被添加到哪里?在PhpStorm或Composer或其他地方?
作曲家.json 文件包含此
"autoload": {
"psr-0": {
"": "src/"
}
}
,
"autoload-dev": {
"psr-4": {
"": "src/tests"
}
},
phpunit.xml 文件包括这个
<phpunit bootstrap="app/autoload.php">
将测试移出 src 听起来是一个很好的建议(关于Jakub Zalas评论),您可以更好地说这是否适合您。
无论如何,开发自动加载器都没有为该路径正确配置:
"autoload-dev": {
"psr-4": {
"": "src/tests"
}
},
会查找文件
srctestsMyAppMyBundleClassesActionActionTestCase.php
但你有文件在
srctestssrcMyAppMyBundleClassesActionActionTestCase.php
^^^
添加缺少的src/
部分应该使其正常工作:
"autoload-dev": {
"psr-4": {
"": "src/tests/src/"
}
},
不要忘记再次转储自动加载:
composer dump-autoload
更改composer.json
后。