2010-08-06 8 views
7

ich einen PHP MVC-Framework mit mehreren ‚Anwendungen‘ unter diesem System habe die OrganisationPHPUnit: Mehrere Bootstraps oder XML-Dateien?

\project\apps\app1\ 
\project\apps\app2\ 
\project\apps\shared\ 

Jede Anwendung meint es ist eigener Satz von Controllern

\project\apps\app1\controllers\FooContoller.php 
\project\apps\app2\controllers\FooContoller.php 
\project\apps\shared\controllers\BarContoller.php 

Ich mag würde einrichten können haben geht PHPUnit Testraum, um jedes der Anwendungsverzeichnisse testen zu können, aber ich hoffe, es auf die "beste" Art und Weise zu tun.

Das Setup von PHPUnit ist wie:

\project\PHPUnit 
\project\PHPUnit\phpunit.xml 
\project\PHPUnit\apps\app1\bootstrap.php 
\project\PHPUnit\apps\app1\controllers 
\project\PHPUnit\apps\app1\controllers\FooControllerTest.php 
\project\PHPUnit\apps\app2\bootstrap.php 
\project\PHPUnit\apps\app2\controllers 
\project\PHPUnit\apps\app2\controllers\FooControllerTest.php 

Jetzt ist hier die Frage: Was ist die "best practice" Art und Weise meine phpunit.xml Dateien zu konfigurieren?

So wie es aussieht, habe ich versucht, beide Anwendungen als eigene Testsuite in die XML-Datei aufzunehmen, aber ich stolperte ziemlich schnell in eine "Klasse kann nicht redeclare: FooController".

Meiner Meinung nach, wäre die ideale Situation, um die XML so zu konfigurieren, dass alle Tests für app1 lief dann wurde Gedächtnis ‚gelöscht‘ und alle Tests wurden für app2 laufen.

Es kann jedoch sein, dass es in Bezug auf die beste Vorgehensweise am besten ist, mehrere XML-Dateien zu haben, eine für jede APP. (Dann vielleicht eine Charge/Shell Datei einen „Test all“ oder Test X laufen)

Wenn wir in einer ‚typischen‘ aussehen PHPUnit XML-Konfigurationsdatei:

<phpunit bootstrap="./apps/app1/bootstrap.php" colors="true"> 
    <testsuite name="App1TestSuite"> 
     <directory>./</directory> 
    </testsuite> 
    <filter> 
     <whitelist> 
     <directory suffix=".php">./apps/app1/controllers/</directory>   
    <directory suffix=".php">./apps/shared/</directory> 
     </whitelist> 
    </filter> 
    <logging> 
     <log type="coverage-html" target="./log/report.html" charset="UTF-8" 
      yui="true" highlight="true" 
      lowUpperBound="50" highLowerBound="80"/> 
     <log type="testdox-html" target="./log/testdox.html" /> 
    </logging> 
</phpunit> 

Soll ich mit vielen von ihnen gehen ? Oder sollte ich das Tag hinzufügen und alle Dateien Setups in einer einzigen XML-Konfiguration kombiniert haben.

Wenn das beste Verfahren 'Einzelkonfiguration' ist ... weiß jemand, wie Sie mehrere 'Bootstraps' aktivieren können? Da jede APP mit leicht unterschiedlichen globalen Variablen geladen wird und einige leicht unterschiedliche Versionen der gleichnamigen Klassen laden, wäre es notwendig, alles zu löschen und neu zu starten.

Ich bin daran interessiert, das "optimale" System für den Test von Anfang an zu bauen, aber habe offensichtlich ein paar Löcher in meinem Wissen.

Antwort

5

Sie im Grunde fast Ihre eigene Frage beantwortet.

Es könnte jedoch der Fall sein, dass es am besten zu mehr XML-Dateien, einen für jedes APP in hinsichtlich bewährter Verfahren. (Dann vielleicht eine Charge/Shell Datei einen „Test alle“ oder Test auszuführen X

Dies ist der Weg zu gehen, halten alles getrennt, einfacher und weniger Kopfschmerzen auf lange Sicht.

Auch Vielleicht möchten Sie in eine Continuous Integration-Lösung schauen, die Ihnen beim Ausführen Ihrer Testsuites hilft, Hudson ist ziemlich nett und integriert sich gut in PHPUnit

+0

Leider: SI denken mit minimaler Entwicklung auf phpunit Gruppen könnte dieses Problem leicht gelöst werden .. . – inf3rno

Verwandte Themen