找不到作曲家phpunit psr-4自动加载类

Fin*_*ish 5 php phpunit slim composer-php psr-4

我正在尝试使用一些phpunit测试类进行作曲家自动加载,我似乎无法让它工作.当我从命令行运行phpunit时,我得到"PHP致命错误:类...未找到".

我将提供所有结构和文件信息,所以希望有人会发现我出错的地方.

结构(减少到相关文件):

composer.json
composer.lock
phpunit.xml
    vendor/
    tests/
        functional/
            BaseTestCase.php
            HomepageTest.php
Run Code Online (Sandbox Code Playgroud)

composer.json

{
"require": {
    "php": ">=5.5.0",
    "slim/slim": "^3.1",
    "slim/php-view": "^2.0",
    "monolog/monolog": "^1.17"
},
"require-dev": {
    "phpunit/phpunit": ">=4.8 < 6.0"
},
"autoload-dev": {
    "psr-4": {
        "Tests\\": "tests/"
    }
}
}
Run Code Online (Sandbox Code Playgroud)

phpunit.xml

<?xml version="1.0" encoding="utf-8" ?>
<phpunit colors="true" bootstrap="vendor/autoload.php">
    <testsuites>
        <testsuite name="Initial tests">
            <directory>tests/</directory>
        </testsuite>
    </testsuites>
</phpunit>
Run Code Online (Sandbox Code Playgroud)

测试/功能/ BaseTestCase.php

<?php
namespace Tests\Functional;

use Slim\App;
use Slim\Http\Request;
use Slim\Http\Response;
use Slim\Http\Environment;

class BaseTestCase extends \PHPUnit_Framework_TestCase
{
  ...
Run Code Online (Sandbox Code Playgroud)

测试/功能/ HomepageTest.php

<?php
namespace Tests\Functional;

class HomepageTest extends BaseTestCase
{
   ...
Run Code Online (Sandbox Code Playgroud)

然后我运行了更新以刷新自动加载文件

$ composer update

Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Writing lock file
Generating autoload files
Run Code Online (Sandbox Code Playgroud)

我然后尝试运行phpunit并找到一个类找不到错误:

$ vendor/bin/phpunit

PHP Fatal error:  Class 'Tests\Functional\BaseTestCase' not found in <project-root>/tests/functional/HomepageTest.php on line 6
Run Code Online (Sandbox Code Playgroud)

为了彻底,我试着以另一种方式刷新自动加载文件,以防万一:

$ composer dump-autoload

Generating autoload files
sfbagency@sfb1:~/clients/ctest/dev$ 
Run Code Online (Sandbox Code Playgroud)

我还检查了vendor/composer/autoload_psr4.php以确保正在设置Test引用,并且确实如此.

...
Tests\\' => array($baseDir . '/tests'),
...
Run Code Online (Sandbox Code Playgroud)

我用Google搜索过疯狂,但不知道我哪里出错了.

iRa*_*RaS 6

命名空间目录区分大小写.您必须将文件夹重命名为Functional

正如PSR-4文件中所述:

子目录名称必须与子命名空间名称的大小写匹配.