没有找到Composer phpunit psr-4自动加载类


composer phpunit psr-4 autoload class not found

我给作曲器自动加载尝试一些phpunit测试类,我似乎不能让它工作。当我从命令行运行phpunit时,我得到以下错误:"PHP致命错误:Class…"未找到"。

我将给出所有的结构和文件信息。我可以,所以希望有人能指出我错在哪里。

结构(精简为相关文件):

composer.json
composer.lock
phpunit.xml
vendor/
tests/
    functional/
        BaseTestCase.php
        HomepageTest.php

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/"
    }
}
}

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>
测试/功能/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
{
  ...
测试/功能/HomepageTest.php

<?php
namespace Tests'Functional;
class HomepageTest extends BaseTestCase
{
   ...

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

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

然后我试着运行phpunit,得到一个类未找到错误:

$ vendor/bin/phpunit
PHP Fatal error:  Class 'Tests'Functional'BaseTestCase' not found in <project-root>/tests/functional/HomepageTest.php on line 6

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

$ composer dump-autoload
Generating autoload files
sfbagency@sfb1:~/clients/ctest/dev$ 

我还检查了vendor/composer/autoload_psr4.php,以确保测试引用被设置,它是。

...
Tests''' => array($baseDir . '/tests'),
...

我已经像疯了一样谷歌,但不知道我错在哪里。

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

如PSR-4文档中所述:

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

我有一个类似的问题,但没有语法问题。只要我添加了第二个类测试(下面的ModelTwoTest.php), Fixtures.php类就自动加载了。如果我删除1个modelTest,则只有剩余的modelTest会自动加载,而没有fixture。怪异的行为。

src/
tests/
      Models/
             ModelOneTest.php
             ModelTwoTest.php <---
      Fixtures/
             Fixtures.php