I play with php 7 and phpunit 6. Here is the test I wrote:
<?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(' foo@bar.com '); $this->assertCount(1, $observer->getChangedUsers()); } }
When I tried to run this test, I got the following error message:
PHP Fatal error: Class 'PHPUnit\Framework\TestCase' not found in /home/.../.../Test/ObserverTest.php on line 9
I installed PHPUnit with composer, here is my content for composer.json file:
{ "require": { "phpunit/phpunit": "^6.0" }, "autoload": { "psr-4": {"DesignPatterns\\": "src/"} } }
According to PHPUnit 6 documentation , your tests should now extend PHPUnit \ Framework \ TestCase instead of PHPUnit_Framework_TestCase.
I know that this is not a problem with startup. Actually, if I replaced PHPUnit \ Framework \ TestCase with PHPUnit_Framework_TestCase, it works fine, but I was wondering why this syntax is not working.
I tried some research on google, stackoverflow and the PHPUnit github repository but found nothing.
I look forward to your answers,
EDIT
This is how my files are organized:
src/ ├── DataMapper │ ├── StorageAdapter.php │ ├── UserMapper.php │ └── User.php ├── Observer │ ├── UserObserver.php │ └── User.php Test/ ├── DataMapperTest.php └── ObserverTest.php