ich mit php 7 und phpunit spiele 6. Hier ist der Test, den ich schrieb:PHP Fatal error: Class 'PHPUnit Framework Testcase' nicht mit PHPUnit gefunden 6 und 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());
}
}
Als ich versuchte, diesen Test ausführen, ich die folgende Fehlermeldung bekam:
PHP Fatal error: Class 'PHPUnit\Framework\TestCase' not found in /home/.../.../Test/ObserverTest.php on line 9
ich PHPUnit mit dem Komponisten installiert ist, hier ist mein composer.json Dateiinhalt:
{
"require": {
"phpunit/phpunit": "^6.0"
},
"autoload": {
"psr-4": {"DesignPatterns\\": "src/"}
}
}
Laut PHPUnit 6 documentation sollen Ihre Tests jetzt PHPUnit \ Framework \ TestCase anstelle von PHPUnit_Framework_TestCase erweitern.
Ich weiß, es ist kein Problem mit Autoloading. Eigentlich, wenn ich PHPUnit \ Framework \ TestCase durch PHPUnit_Framework_TestCase ersetze, funktioniert es gut, aber ich habe mich gefragt, warum diese Syntax nicht funktioniert hat.
Ich habe versucht, etwas über Google, Stackoverflow und PHPUnit Github-Repository zu recherchieren, konnte aber nichts finden.
ich mich für Ihre Antworten suchen,
EDIT
Dies ist, wie meine Dateien organisiert sind:
src/
├── DataMapper
│ ├── StorageAdapter.php
│ ├── UserMapper.php
│ └── User.php
├── Observer
│ ├── UserObserver.php
│ └── User.php
Test/
├── DataMapperTest.php
└── ObserverTest.php
gehen Sie in Anbieter und schauen, ob PHPUNIT ist oder nicht –
die Testdatei ist in der Src-Ordner? Wenn ja, sollte es das Suffix DesignPatterns im Namensraum haben? – Matteo
Hallo, ja, phpunit ist da. – romaind