Я играю с PHP 7 и PHPUnit 6. Здесь есть тест, который я написал:PHP Фатальная ошибка: Class 'PHPUnit Framework TestCase' не найден с помощью PHPUnit 6 и PHP 7.0
<?php declare(strict_types=1);
namespace Test;
use DesignPatterns\Observer\User;
use DesignPatterns\Observer\UserObserver;
use PHPUnit\Framework\TestCase;
class ObserverTest extends TestCase
{
public function testChangeInUserLeadsToUserObserverBeingNotified()
{
$observer = new UserObserver();
$user = new User();
$user->attach($observer);
$user->changeEmail('[email protected]');
$this->assertCount(1, $observer->getChangedUsers());
}
}
Когда я попытался чтобы запустить этот тест, я получил следующее сообщение об ошибке:
PHP Fatal error: Class 'PHPUnit\Framework\TestCase' 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 documentation, ваши тесты теперь должны расширять PHPUnit \ Framework \ TestCase вместо PHPUnit_Framework_TestCase.
Я знаю, что это не проблема с автозагрузкой. На самом деле, если я заменю PHPUnit \ Framework \ TestCase на 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
зайдите в поставщика и посмотрите, есть ли phpunit или нет –
тестовый файл находится в папке src? если да, у него должен быть суффикс DesignPatterns в пространстве имен? – Matteo
Привет, да, phpunit есть. – romaind