2010-08-06 7 views
7

que tienen un marco de PHP MVC con múltiples 'aplicaciones' bajo este sistema la organización vaPHPUnit: ¿Múltiples Bootstraps o archivos XML?

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

Cada aplicación puede tener su propio conjunto de controladores

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

Me gustaría configurar mi PHPUnit prueba el espacio para poder probar cada uno de los directorios de la aplicación, pero espero hacerlo de la "mejor" manera.

La configuración de PHPUnit es como:

\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 

Ahora aquí está la pregunta: ¿cuál es la "mejor práctica" para configurar los archivos de mi phpunit.xml?

Tal como está, traté de incluir ambas aplicaciones como su propio conjunto de pruebas en el archivo XML, pero me encontré con una "Can not Redeclare Class: FooController" bastante rápido.

En mi opinión, la situación ideal sería configurar el XML de manera que todas las pruebas se postularon para app1 continuación, la memoria se 'borra' y todos los ensayos se realizaron por app2.

Sin embargo, puede ser que, en términos de mejores prácticas, sea mejor tener varios archivos XML, uno para cada aplicación. (Entonces, tal vez un archivo por lotes/shellscript para ejecutar una "prueba de todo" o el ensayo X)

Si nos fijamos en un 'típico' PHPUnit archivo de configuración XML:

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

¿Debo ir con muchos de estos ? O debería añadir la etiqueta y tienen todas las configuraciones de archivos combinados en una sola configuración XML.

Si la mejor práctica es la 'configuración única' ... ¿alguien sabe cómo hacer para habilitar múltiples 'bootstraps'? Dado que cada aplicación se carga con variables globales ligeramente diferentes, y algunas cargarán versiones ligeramente diferentes de las clases con el mismo nombre, sería necesario borrar todo y comenzar de nuevo.

Estoy interesado en construir el sistema "óptimo" para probar desde el principio, pero obviamente tengo algunos agujeros en mi conocimiento.

Respuesta

5

Es, básicamente, casi respondiendo a su propia pregunta.

Podría sin embargo, ser el caso de que en términos de mejores prácticas que lo mejor es tener varios archivos XML, uno para cada APP. (Entonces, tal vez un archivo por lotes/shellscript para ejecutar una "prueba de todo" o el ensayo X

Este es el camino a seguir, mantener todo separado, dolores de cabeza más simples y menos en el largo plazo.

también , es posible que desee buscar alguna solución de integración continua para ayudarlo a ejecutar sus testsuids, Hudson es bastante agradable y se integra bien con PHPUnit.

+0

Lamentablemente: SI creo que con un desarrollo mínimo en los grupos phpunit, este problema podría resolverse fácilmente. . – inf3rno

Cuestiones relacionadas