2010-08-06 3 views
7

J'ai un framework MVC PHP avec plusieurs « applications » dans ce système, l'organisation vaPHPUnit: Bootstraps multiples ou fichiers XML?

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

Chaque application peut avoir son propre ensemble de contrôleurs

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

Je voudrais mettre mon PHPUnit tester l'espace pour être en mesure de tester chacun des répertoires de l'application, mais j'espère pouvoir le faire de la "meilleure" manière.

La configuration de PHPUnit est comme:

\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 

Maintenant, voici la question: quelle est la « meilleure pratique » pour configurer mes fichiers phpunit.xml? En l'état, j'ai essayé d'inclure les deux applications en tant que leur propre suite de tests dans le fichier XML, mais je rencontre un "Can not Redeclare Class: FooController" assez rapidement.

À mon avis, la situation idéale serait de configurer le XML afin que tous les tests ont couru pour app1 alors la mémoire a été « effacée » et tous les tests ont été effectués pour App2.

Cependant, en termes de meilleures pratiques, il est préférable d'avoir plusieurs fichiers XML, un pour chaque APP. (Alors peut-être un lot/fichier shellscript pour exécuter un « test tous » ou un test X)

Si l'on regarde un fichier de configuration XML PHPUnit « typique »:

<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> 

Dois-je aller avec beaucoup d'entre eux ? Ou devrais-je ajouter le tag et avoir tous les fichiers Setups combinés dans une seule configuration XML. Si la meilleure pratique est la «configuration unique» ... est-ce que quelqu'un sait comment vous pouvez activer plusieurs «bootstraps»? Étant donné que chaque application charge avec des variables globales légèrement différentes et que certaines chargeront des versions légèrement différentes de classes portant le même nom, il sera nécessaire de tout effacer et de recommencer.

Je suis intéressé par la construction du système «optimal» pour le test dès le départ, mais j'ai évidemment quelques trous dans ma connaissance.

Répondre

5

Vous avez pratiquement répondu à votre propre question.

Il pourrait cependant être le cas que dans termes de meilleures pratiques, il est préférable d'avoir plusieurs fichiers XML, un pour chaque APP . (Alors peut-être un fichier batch/shellscript pour exécuter un « test tous » ou un test X

Ceci est la voie à suivre, tout garder séparés, des maux de tête plus simples et moins à long terme.

également , vous pouvez vouloir regarder dans une solution d'intégration continue pour aider à exécuter vos testsuites, Hudson est plutôt agréable et s'intègre bien avec PHPUnit

+0

Malheureusement: SI pense avec un développement minimal sur les groupes phpunit, ce problème pourrait être facilement résolu. . – inf3rno

Questions connexes