PHPUnit无法找到路径,PhpStorm添加的额外文件夹

时间:2017-07-06 13:39:46

标签: 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\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"> 

1 个答案:

答案 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