PHP Fatal error: Class 'PHPUnit\Framework\TestCase' nicht gefunden mit PHPUnit 6 und PHP 7.0
Spiele ich mit php 7 und phpunit 6. Hier ist der test, den ich schrieb:
<?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, führen Sie diesen test, habe ich die folgende Fehlermeldung:
PHP Fatal error: Class 'PHPUnit\Framework\TestCase' not found in /home/.../.../Test/ObserverTest.php on line 9
Installierte ich PHPUnit mit dem Komponisten, hier ist mein Komponist.json-Datei Inhalt:
{
"require": {
"phpunit/phpunit": "^6.0"
},
"autoload": {
"psr-4": {"DesignPatterns\\": "src/"}
}
}
Laut PHPUnit-6-Dokumentation, Ihre tests nun soll PHPUnit erweitert\Framework\TestCase statt PHPUnit_Framework_TestCase.
Ich weiß, es ist nicht ein Problem mit autoloading. Eigentlich, wenn ich ersetzen PHPUnit\Framework\TestCase mit PHPUnit_Framework_TestCase, funktioniert es ganz gut, aber ich Frage mich, warum diese syntax nicht funktioniert.
Ich habe versucht, einige der Forschung auf google, stackoverflow und PHPUnit ' s github-repository, aber konnte nichts finden.
Ich freue mich für Eure Antworten,
BEARBEITEN
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 Verkäufer und schauen, ob phpunit da ist oder nicht
- die test-Datei in den src-Ordner? wenn ja sollte es den DesignPatterns-suffix in den namespace?
- Hi, ja, phpunit gibt es.
- Nein, die test-Datei ist nicht im Verzeichnis src/, es ist in einen Test-Ordner
- wie wollen Sie laden den Ordner test in den autoloader?
- keine Notwendigkeit zu laden, den Ordner test in den autoloader. Ich erstellt phpunit.xml -Datei entsprechend dem Verzeichnis Test
- Sie können auch die Antwort aus der folgenden Antwort stackoverflow.com/questions/42811164/..., damit Ihr code kompatibel mit PHPUnit 6 sowie frühere Versionen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich die Antwort:
War ich excuting meinem test mit dieser Befehlszeile:
PHPUnit ist Global installiert auf meinem computer, aber es ist die 5.1.3 version:
Und die syntax PHPUnit\Framework\TestCase funktioniert nur mit PHPUnit 6
Nun, wenn ich
php vendor/bin/phpunit Test/ObserverTest.php
, es funktioniert perfekt...