2016-10-19 2 views
2

Ich habe ein paar Probleme beim Testen von CakePHP2-Anwendungen über PHPUnit in einem Docker-Container.GitLab CI Docker CakePHP 2 Test funktioniert nicht

Der CakePHP2 testing guide besagt, dass die letzte PHPUnit-Version, die mit CakePHP2 kompatibel ist, 3.7.38 ist.

Ich verwende diese Version aber noch erhalte ich folgende Fehler:

Warning Error: include(PHPUnit/Autoload.php): failed to open stream: No such file or directory in [/builds/application_folder/lib/Cake/TestSuite/CakeTestSuiteDispatcher.php, line 162]

Warning Error: include(): Failed opening 'PHPUnit/Autoload.php' for inclusion (include_path='/builds/zb2/kswf/lib:.:/usr/local/lib/php') in [/builds/application_folder/lib/Cake/TestSuite/CakeTestSuiteDispatcher.php, line 162]

Es gab einen issue zu diesem Fehler, aber es wurde von Herabstufung von PHPUnit 4 bis PHPUnit gelöst 3.

Hier ist die Dockerfile für das Bild, das ich für die Gitlab Runner

FROM php:5 
RUN apt-get update -y 
RUN apt-get install -y wget 
RUN sh -c 'wget -c https://phar.phpunit.de/phpunit-3.7.38.phar -O phpunit.phar && chmod +x phpunit.phar && mv phpunit.phar /usr/local/bin/phpunit' 

im before_script Abschnitt meines .gitlab-ci.yml ich das drucken mit die PHPUnit-Version, um zu verifizieren, dass die korrekte Version installiert ist und 3.7.38 gedruckt wird.

Ich würde mich über jede Hilfe hier freuen!

+0

Ich habe das gleiche Problem aber keine Lösung im Moment :-( –

Antwort

1

Nun, die Sache ist, dass phpunit Datei für sich selbst nicht automatisch geladen hat, beginnend mit v4 (wenn ich das richtig erinnere). Alle Dateien, die in phpunit.phar gepackt sind, werden über direkte in-code require-Anweisungen eingefügt (z. B. für 5.3.4 phar solche Anweisungen belegen Zeilen 23 - 517 der Datei, wenn Sie in die Datei schauen). Der Grund dafür ist, dass Ihre Tests über den Befehl phpunit in CLI gestartet werden, sodass die phar-Datei alle Vorbereitungen vornimmt und PHPUnit_TextUI_Command :: main() startet.

Wenn Sie Tests von PHP-Code starten müssen (sieht so aus als wäre das der Fall), müssen Sie sich um alle Vorbereitungen selbst kümmern. Wenn Sie nur das Laden von Klassen erwähnen, können Sie entweder einen Mapper und spl_autoload_register implementieren oder einen Dump für Klassen erstellen und eine Datei erstellen, die alle Dateien von phpunit enthält (wie in der phar-Datei). Eine andere Option (nie ausprobiert, aber ich halte es für möglich) könnte Composer zum Erstellen von Dump und Autoloader für phpunit verwenden, es verfügt über solche Funktionen.

Ich habe einen solchen Launcher für Komodo IDE implementiert und ich wählte die erste Option (mein eigener Dumper, Mapper und Autoloader) nur um nicht alle Dateien sofort zu enthalten und nur tatsächlich benötigte benötigt und auch geladen werden können habe verschiedene Versionen von phpunit.

Nun, das ist nicht wirklich eine Antwort, da Sie nicht einfach kopieren und einfügen können, ich habe versucht, alles als Kommentar zu setzen, aber nicht geschafft, kurz genug zu sein.

Verwandte Themen