PHPUnit-Konfiguration (phpunit.xml) — be-in ein bootstrap?

Situation

Sind wir mit PHPUnit in unser Projekt und sind mit einem phpunit.xml um sicherzustellen, dass alles wie backupGlobals ausgeschaltet ist.

Weiter gewährleistet der include-Pfad gesetzt ist, und automatisches laden aktiv ist, werden wir auch cascade unser test startet. Das heißt, jeder test und alltests-suite hat eine require_once(__DIR__ . '/../bootstrap.php'); an der Spitze, den ganzen Weg bis zu der Basis-Ordner-Ebene, wo es offensichtlich liest require_once(__DIR__ . '/bootstrap.php');, und die eigentliche bootstrap-Datei befindet.

Im wesentlichen unsere tests sind autonom. Sie anrufen können AllTests.php in jedem Ordner und jeder *Test.php von selbst, und Sie werden ausführen, mit der richtigen Konfiguration.

Ausnahme keine. 'Warten Sie einen moment.'

Ist nur wahr, wenn wir entweder Kraft unsere Entwickler phpunit --configuration=path/to/phpunit.xml oder Sie sind in den Ordner mit der phpunit.xml (so dass PHPUnit zieht es aus dem aktuellen Arbeitsverzeichnis, wenn es ausgeführt wird).

Gelegentlich, das macht es unglaublich schwer zu bestimmen, warum tests auf einer Entwickler-Maschine brechen und warum Sie auf einem anderen. Es dauert einfach zu vergessen, dass der bootstrap nicht das einzige, was wir brauchen, um die gleiche Testumgebung. Halten Sie im Verstand, da konnte Sie nicht vergessen, die bootstrap-wenn Sie versucht haben, weil es in den tests selbst, zu vergessen, andere Einstellungen, insbesondere der Regel-optional, wie die (wenn Sie in den Ordner mit der phpunit.xml ist, wird es automatisch gezogen), ist einfach.

In der Tat - es ist ein paar mal passiert.

Frage

Gibt es eine Möglichkeit, die ich liefern kann, die phpunit.xml zur Verwendung in der test-Datei ausführen, wie in unseren günstig allgegenwärtig bootstrap-Datei, anstatt zu liefern, um PHPUnit vorher, sei es durch Befehl-Linie Schalter oder indem Sie in seinem Verzeichnis ?

Einem kurzen Blick auf den code legt nahe, die Antwort ist Nein - Konfiguration gut und wirklich scheint geladen zu werden, bevor die test-Dateien sind selbst gezogen:

[PHPUnit/TextUI/Command.php]
...
if (isset($this->arguments['configuration'])) {
    $configuration = PHPUnit_Util_Configuration::getInstance(
        $this->arguments['configuration']
    );
    $phpunit = $configuration->getPHPUnitConfiguration();
    ...

Dass macht Sinn, gegeben, dass die Konfiguration enthalten kann test white - oder blacklists.

Wirklich, es würde keinen Sinn machen, laden testen Filter im test bootstrap selbst, so dass die Hälfte der möglichen Konfiguration aus dem Fenster, aber die tatsächlichen Verhaltens-flags von PHPUnit...

[sample of part of our phpunit.xml]
<phpunit
    backupGlobals="false" 
    backupStaticAttributes="false" 
    convertErrorsToExceptions="true"  
    convertNoticesToExceptions="true"
    convertWarningsToExceptions="true"
    syntaxCheck="false"
    processIsolation="false"
    colors="true">

...vielleicht mit Ausnahme von "Farben" kommt mir als etwas, dass der test selbst sollte in der Lage sein, zu entscheiden, auf einer bestimmten Ebene.

Trostpreis für...

Zugegeben, jetzt würde ich gerne nur wissen, ob ich unterrichten kann, PHPUnit backupGlobals="false" von der bootstrap Datei, falls es jemand kennt einen Weg.

(Wenn fruchtlos, ist die praktische Antwort, ich werde verfolgen, wird es wahrscheinlich sein, kopieren Sie die phpunit.xml in alle Unterordner. Ich möchte vermeiden, dass die Lösung, da Sie es schafft redundante Kopien, und sollten wir jemals wählen, um die Einstellungen zu ändern... ja, Autsch!)

InformationsquelleAutor pinkgothic | 2010-10-20
Schreibe einen Kommentar