Неустранимая ошибка PHP: класс 'PHPUnit FrameworkTestCase' не найден с PHPUnit 6 и PHP 7.0


Я играю с php 7 и phpunit 6. Вот тест, который я написал:

<?php declare(strict_types=1);

namespace Test;

use DesignPatternsObserverUser;
use DesignPatternsObserverUserObserver;
use PHPUnitFrameworkTestCase;

class ObserverTest extends TestCase
{
    public function testChangeInUserLeadsToUserObserverBeingNotified()
    {
        $observer = new UserObserver();

        $user = new User();
        $user->attach($observer);

        $user->changeEmail('foo@bar.com');
        $this->assertCount(1, $observer->getChangedUsers());
    }
}

Когда я попытался запустить этот тест, я получил следующее сообщение об ошибке:

PHP Fatal error:  Class 'PHPUnitFrameworkTestCase' not found in /home/.../.../Test/ObserverTest.php on line 9

Я установил PHPUnit с composer, вот мой композитор.содержимое файла json:

{
    "require": {
        "phpunit/phpunit": "^6.0"
    },
    "autoload": {
        "psr-4": {"DesignPatterns\": "src/"}
    }
}

Согласно документацииPHPUnit 6 , теперь предполагается, что ваши тесты расширяют PHPUnitFrameworkTestCase вместо PHPUnit_Framework_TestCase.

Я знаю, что это не проблема с автоматической загрузкой. На самом деле, если я замените PHPUnit FrameworkTestCase на PHPUnit_Framework_TestCase, это работает просто отлично, но мне было интересно, почему этот синтаксис не работает.

Я попытался провести некоторые исследования в google, stackoverflow и репозитории GitHub PHPUnit, но ничего не смог найти.

Я с нетерпением жду ваших ответов,

EDIT

Вот как организованы мои файлы:

src/
├── DataMapper
│   ├── StorageAdapter.php
│   ├── UserMapper.php
│   └── User.php
├── Observer
│   ├── UserObserver.php
│   └── User.php
Test/
├── DataMapperTest.php
└── ObserverTest.php
2 8

2 ответа:

Я нашел ответ:

Я начинал свой тест с этой командной строки:

phpunit Test/ObserverTest.php

PHPUnit установлен глобально на моем компьютере, но это версия 5.1.3:

phpunit -v

PHPUnit 5.1.3 by Sebastian Bergmann and contributors.

Runtime:       PHP 7.0.13-0ubuntu0.16.04.1 with Xdebug 2.4.0
Configuration: /home/.../.../DesignPatterns/phpunit.xml

И синтаксис PHPUnit \ Framework\TestCase работает только с PHPUnit 6

Теперь, если я запускаю php vendor/bin/phpunit Test/ObserverTest.php, он работает идеально...

Вы можете запустить ./vendor/bin/phpunit Test/ObserverTest.php это работает для меня.