Für diejenigen, die nach der Aktualisierung von phpunit auf Version 6 oder höher, die am 03.02.2017 veröffentlicht wurde (z. B. mit Composer), hier ankommen , wird möglicherweise dieser Fehler angezeigt, da der phpunit-Code jetzt einen Namespace hat (siehe Änderungsprotokoll ).
Sie müssen Dinge Refactoring wie \PHPUnit_Framework_TestCasezu\PHPUnit\Framework\TestCase
Vielen Dank, ich hatte dieses Problem, weil Travis CI die neueste PHPUnit-Version in ihren PHP 7-Builds verwendet hat. Mein Fix bestand darin, ein altes Phar manuell herunterzuladen und stattdessen zu verwenden.
Ich war wirklich verärgert, dass meine Tests plötzlich nicht mehr funktionierten. Ich habe ein Composer-Update durchgeführt und mein PHPunit auf 6.1 aktualisiert. Danke.
Jed Lynch
38
Für eine höhere Version von phpunit wie 6.4
müssen Sie den Namespace PHPUnit \ Framework \ TestCase verwenden
Verwenden Sie stattdessen TestCase PHPUnit_Framework_TestCase
// use the following namespaceusePHPUnit\Framework\TestCase;// extend using TestCase instead PHPUnit_Framework_TestCaseclassSampleTestextendsTestCase{}
Ausgezeichnet, das hat bei mir funktioniert, da ich einem alten Tutorial
Sie haben gerade Shadis Antwort kopiert
Adam
@ Adam wer ist Shadi?
Jijesh Cherrai
Ich weiß so etwas nicht. Ich habe den gleichen Fehler, dann
erkunde
13
Möglicherweise wird dieser Fehler angezeigt, weil Sie die Datei mit einem Namespace versehen haben. In diesem Fall müssen Sie angeben, dass sich PHPUnit_Framework_TestCase im globalen Namespace befindet, indem Sie einen Backslash voranstellen:
Ja, wenn Sie dies getan haben: class YourNiceTest extends PHPUnit_Framework_TestCaseFügen Sie einfach das \ vor der erweiterten Klasse hinzu, wie in class YourNiceTest extends \PHPUnit_Framework_TestCase- Dies hat bei mir funktioniert, indem Sie Symfony 2.8die phpunitals lokale Abhängigkeit heruntergeladene Composer-Datei mit"phpunit/phpunit": "^4.8"
Xavi Montero vom
12
Ich habe PHPUnit-Tests auf PHP5 ausgeführt und musste dann auch PHP7 unterstützen. Das habe ich getan:
In composer.json:
"phpunit/phpunit":"~4.8|~5.7"
In meiner PHPUnit-Bootstrap-Datei (in meinem Fall /tests/bootstrap.php):
// PHPUnit 6 introduced a breaking change that// removed PHPUnit_Framework_TestCase as a base class,// and replaced it with \PHPUnit\Framework\TestCaseif(!class_exists('\PHPUnit_Framework_TestCase')&& class_exists('\PHPUnit\Framework\TestCase'))
class_alias('\PHPUnit\Framework\TestCase','\PHPUnit_Framework_TestCase');
Mit anderen Worten, dies funktioniert für Tests, die ursprünglich für PHPUnit 4 oder 5 geschrieben wurden, dann aber auch für PHPUnit 6 benötigt werden.
Diese Lösung ist wichtig, wenn Sie den Civi \ Test-Code nicht berühren möchten, aber mit dem neuesten namespace-basierten PHP-Unit-Test kompatibel sein möchten
Konfiguration der Testsuite: demosuite.xml. demoist ein Verzeichnis, das alle Tests enthält. Testdateien müssen als *_test.php( suffix) benannt werden.
Dies funktioniert nicht mehr, da die neuesten PHPUnit alte Klassennamen wie z PHPUnit_Framework_TestCase. Sie müssen wirklich verwenden... extends PHPUnit\Framework\TestCase
Mikko Rantalainen
Ich sagte nur, dass ich zuerst mv phpunit /usr/local/bin/phpunitund dann musste sudo chmod +x /usr/local/bin/phpunit. Das Festlegen der Datei als ausführbare Datei vor dem Verschieben hat unter Vagrant Ubuntu nie funktioniert. Keine Ahnung warum ... Aber falls jemand damit zu kämpfen hat, hoffe ich, dass dies hilft.
George Mylonas
4
Annahme:
Phpunit (3.7) ist in der Konsolenumgebung verfügbar.
Aktion:
Geben Sie den folgenden Befehl in die Konsole ein:
SHELL> phpunit "{{PATH TO THE FILE}}"
Bemerkungen:
Sie müssen nichts in die neuen Versionen von PHPUnit aufnehmen, es sei denn, Sie möchten nicht in der Konsole ausgeführt werden. Zum Beispiel Tests im Browser ausführen.
Wenn Sie Centos oder eine andere Linux-Distribution haben, müssen Sie das phpunit-Paket installieren. Ich habe das mit yum install phpunit gemacht und es hat funktioniert. Möglicherweise müssen Sie ein Repository hinzufügen, aber ich denke, es muss reibungslos mit den Standard-Repository funktionieren (ich habe CentOS 7).
Es kann durchaus sein, dass Sie WordPress-Kerntests ausführen und kürzlich Ihre PhpUnit auf Version 6 aktualisiert haben. Wenn dies der Fall ist, hat die kürzlich vorgenommene Änderung des Namespaces in PhpUnit Ihren Code beschädigt.
Glücklicherweise gibt es unter https://core.trac.wordpress.org/changeset/40547 einen Patch für die Kerntests, der das Problem umgeht. Es enthält auch Änderungen an travis.yml, die Sie möglicherweise nicht in Ihrem Setup haben. Wenn dies der Fall ist, müssen Sie die DIFF-Datei bearbeiten, um den Travis-Patch zu ignorieren.
Bearbeiten Sie die Patch-Datei, um den Travis-Teil des Patches zu entfernen, wenn Sie dies nicht benötigen. Löschen Sie vom Anfang der Datei bis knapp über diese Zeile:
Speichern Sie den Unterschied im Verzeichnis über Ihrem Verzeichnis / include / - in meinem Fall war dies das Wordpress-Verzeichnis selbst
Verwenden Sie das Unix-Patch-Tool, um die Dateien zu patchen. Sie müssen auch die ersten Schrägstriche entfernen, um von einer absoluten zu einer relativen Verzeichnisstruktur zu wechseln. Wie Sie unter Punkt 3 oben sehen können, befinden sich vor dem Include-Verzeichnis fünf Schrägstriche, die durch ein -p5-Flag für Sie entfernt werden.
$ cd [WORDPRESS DIRECTORY]
$ patch -p5 < changeset_40547.diff
HINWEIS: Der Befehl php bin/console generate:doctrine:crudcreate TestControllerin wird ebenfalls erstellt, src/Testssodass beim Versuch, den Server zu starten, ein Fehler ausgelöst werden kann, wenn dies nicht der Fall ist UnitTests. Entfernen Sie die Datei reparieren Sie es!
Antworten:
In der PHPUnit-Dokumentation
heißtes, dass PHPUnit / Framework.php wie folgt eingeschlossen / benötigt wird:AKTUALISIEREN
Ab PHPUnit 3.5 gibt es eine integrierte Autoloader-Klasse, die dies für Sie erledigt:
Vielen Dank an Phoenix für diesen Hinweis!
quelle
require_once 'PHPUnit/Autoload.php'
PHPUnit/Autoload.php
undPHPUnit/Framework/TestCase.php
mein Ordner ist wiePHPUnit/Framework/MockObject
PHP Fatal error: require_once(): Failed opening required 'PHPUnit/Autoload.php'
Für diejenigen, die nach der Aktualisierung von phpunit auf Version 6 oder höher, die am 03.02.2017 veröffentlicht wurde (z. B. mit Composer), hier ankommen , wird möglicherweise dieser Fehler angezeigt, da der phpunit-Code jetzt einen Namespace hat (siehe Änderungsprotokoll ).
Sie müssen Dinge Refactoring wie
\PHPUnit_Framework_TestCase
zu\PHPUnit\Framework\TestCase
quelle
Für eine höhere Version von phpunit wie 6.4 müssen Sie den Namespace PHPUnit \ Framework \ TestCase verwenden
Verwenden Sie stattdessen TestCase PHPUnit_Framework_TestCase
quelle
Möglicherweise wird dieser Fehler angezeigt, weil Sie die Datei mit einem Namespace versehen haben. In diesem Fall müssen Sie angeben, dass sich PHPUnit_Framework_TestCase im globalen Namespace befindet, indem Sie einen Backslash voranstellen:
Ich reichte eine grobe PR ein , um ein Gespräch zur Korrektur der Dokumentation zu beginnen .
quelle
class YourNiceTest extends PHPUnit_Framework_TestCase
Fügen Sie einfach das \ vor der erweiterten Klasse hinzu, wie inclass YourNiceTest extends \PHPUnit_Framework_TestCase
- Dies hat bei mir funktioniert, indem SieSymfony 2.8
diephpunit
als lokale Abhängigkeit heruntergeladene Composer-Datei mit"phpunit/phpunit": "^4.8"
Ich habe PHPUnit-Tests auf PHP5 ausgeführt und musste dann auch PHP7 unterstützen. Das habe ich getan:
In composer.json:
In meiner PHPUnit-Bootstrap-Datei (in meinem Fall
/tests/bootstrap.php
):Mit anderen Worten, dies funktioniert für Tests, die ursprünglich für PHPUnit 4 oder 5 geschrieben wurden, dann aber auch für PHPUnit 6 benötigt werden.
quelle
Sie können PHPUnit einfach installieren, um Befehle auszuführen ( https://github.com/sebastianbergmann/phpunit/#php-archive-phar ):
Führen Sie einen einzelnen Test durch
Führen Sie dann den PHPunit-Test aus:
Der Inhalt der Testdatei lautet wie folgt:
Führen Sie die Testsuite aus
Konfiguration der Testsuite: demosuite.xml.
demo
ist ein Verzeichnis, das alle Tests enthält. Testdateien müssen als*_test.php
(suffix
) benannt werden.Die Testsuite wird mit folgenden Befehlen ausgeführt:
quelle
PHPUnit_Framework_TestCase
. Sie müssen wirklich verwenden... extends PHPUnit\Framework\TestCase
mv phpunit /usr/local/bin/phpunit
und dann musstesudo chmod +x /usr/local/bin/phpunit
. Das Festlegen der Datei als ausführbare Datei vor dem Verschieben hat unter Vagrant Ubuntu nie funktioniert. Keine Ahnung warum ... Aber falls jemand damit zu kämpfen hat, hoffe ich, dass dies hilft.Annahme:
Aktion:
Geben Sie den folgenden Befehl in die Konsole ein:
Bemerkungen:
Sie müssen nichts in die neuen Versionen von PHPUnit aufnehmen, es sei denn, Sie möchten nicht in der Konsole ausgeführt werden. Zum Beispiel Tests im Browser ausführen.
quelle
Ich benutze ZF2 und arbeite für mich, wenn 'PHPUnit_Framework_TestCase' durch '\ PHPUnit \ Framework \ TestCase' ersetzt wird.
quelle
Wenn Sie Centos oder eine andere Linux-Distribution haben, müssen Sie das phpunit-Paket installieren. Ich habe das mit yum install phpunit gemacht und es hat funktioniert. Möglicherweise müssen Sie ein Repository hinzufügen, aber ich denke, es muss reibungslos mit den Standard-Repository funktionieren (ich habe CentOS 7).
quelle
Es kann durchaus sein, dass Sie WordPress-Kerntests ausführen und kürzlich Ihre PhpUnit auf Version 6 aktualisiert haben. Wenn dies der Fall ist, hat die kürzlich vorgenommene Änderung des Namespaces in PhpUnit Ihren Code beschädigt.
Glücklicherweise gibt es unter https://core.trac.wordpress.org/changeset/40547 einen Patch für die Kerntests, der das Problem umgeht. Es enthält auch Änderungen an travis.yml, die Sie möglicherweise nicht in Ihrem Setup haben. Wenn dies der Fall ist, müssen Sie die DIFF-Datei bearbeiten, um den Travis-Patch zu ignorieren.
Bearbeiten Sie die Patch-Datei, um den Travis-Teil des Patches zu entfernen, wenn Sie dies nicht benötigen. Löschen Sie vom Anfang der Datei bis knapp über diese Zeile:
Speichern Sie den Unterschied im Verzeichnis über Ihrem Verzeichnis / include / - in meinem Fall war dies das Wordpress-Verzeichnis selbst
Verwenden Sie das Unix-Patch-Tool, um die Dateien zu patchen. Sie müssen auch die ersten Schrägstriche entfernen, um von einer absoluten zu einer relativen Verzeichnisstruktur zu wechseln. Wie Sie unter Punkt 3 oben sehen können, befinden sich vor dem Include-Verzeichnis fünf Schrägstriche, die durch ein -p5-Flag für Sie entfernt werden.
Danach liefen meine Tests wieder korrekt.
quelle
HINWEIS: Der Befehl
php bin/console generate:doctrine:crud
createTestController
in wird ebenfalls erstellt,src/Tests
sodass beim Versuch, den Server zu starten, ein Fehler ausgelöst werden kann, wenn dies nicht der Fall istUnitTests
. Entfernen Sie die Datei reparieren Sie es!quelle
Für mich war es, weil ich rannte
anstatt
als ich bereits eine konfigurierte
phpunit.xml
Datei im Arbeitsverzeichnis hatte.quelle
Ich benutze PHP 5.6 unter Windows 10 mit Zend 1.12 Version für mich
Vor
hat funktioniert. Wir müssen diese obige Anweisung in die Datei ControllerTestCase.php einfügen
quelle