Неустранимая ошибка 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 ответа:
Я нашел ответ:
Я начинал свой тест с этой командной строки:
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
, он работает идеально...