2012-03-02 16 views
13
<phpunit backupGlobals="false" colors="true"> 
    <testsuite name="app1" > 
     <directory>./app1</directory> 
    </testsuite> 
    <testsuite name="app1" > 
     <directory>./app2</directory> 
    </testsuite> 
</phpunit> 

¿Cómo puedo hacer que el primer y segundo testuite carguen diferentes bootstraps?PHPunit diferente bootstrap para todos los testsuites

Respuesta

2

No puede.

PHPUnit solo le permite especificar un archivo de arranque y necesita configurar todo para que cada caso de prueba de cada conjunto de pruebas pueda ejecutarse potencialmente y PHPUnit no tiene cómo ejecutar código de "instalación" para cada conjunto de pruebas desde un archivo de arranque xml archivo.

Cuando se utiliza el, con PHPUnit 3.6 desanimados, TestSuite clases que podrían hacerlo en aquellos pero mi sugerencia sería simplemente ejecutar todo el código de arranque genérico en su Bootstrap.php y en caso de necesitar una configuración especial para las pruebas en app1 y en app2 para tener un App1_TestCase heredado.

En caso de que App1 realmente sea una aplicación completa, sugiero tener dos proyectos separados con sus propias pruebas y código de configuración y no intentar ejecutarlos en una ejecución de phpunit.

11

puede crear dos archivos de arranque diferente y dos archivos XML de configuración diferentes

app1.xml

<phpunit bootstrap="app1BootstrapFile.php" colors="true"> 
    <testsuite name="app1" > 
     <directory>./app1</directory> 
    </testsuite> 
</phpunit> 

app2.xml

<phpunit bootstrap="app2BootstrapFile.php" backupGlobals="false" colors="true"> 
    <testsuite name="app2" > 
     <directory>./app2</directory> 
    </testsuite> 
</phpunit> 

Para ejecutar:

$phpunit --configuration app1.xml app1/ 
$phpunit --configuration app2.xml app2/ 

Si ejecuta un lote de prueba más que el otro (digamos app1), el nombre del phpunit.xml XML y sólo puede funcionar

$phpunit app1/ 
$phpunit --configuration app2.xml app2/ 

hago esto con las pruebas de unidad/integración.

+0

No creo que esto es una buena idea porque tener 10 archivos de arranque diferentes que necesitará, basado en su solución, para crear 10 archivos phpunitblabla.xml – smarber

13

Lo que hice fue tener un Oyente.

phpunit.xml

<?xml version="1.0" encoding="UTF-8"?> 
<phpunit bootstrap="./phpunit_bootstrap.php" 
    backupGlobals="false" 
    backupStaticAttributes="false" 
    verbose="true" 
    colors="true" 
    convertErrorsToExceptions="true" 
    convertNoticesToExceptions="true" 
    convertWarningsToExceptions="true" 
    processIsolation="false" 
    stopOnFailure="false" 
    syntaxCheck="true"> 
    <testsuites> 
     <testsuite name="unit"> 
      <directory>./unit/</directory> 
     </testsuite> 
     <testsuite name="integration"> 
      <directory>./integration/</directory> 
     </testsuite> 
    </testsuites> 
    <listeners> 
     <listener class="tests\base\TestListener" file="./base/TestListener.php"></listener> 
    </listeners> 
</phpunit> 

Entonces TestListener.php

class TestListener extends \PHPUnit_Framework_BaseTestListener 
{ 
    public function startTestSuite(PHPUnit_Framework_TestSuite $suite) 
    { 
     if (strpos($suite->getName(),"integration") !== false) { 
      // Bootstrap integration tests 
     } else { 
      // Bootstrap unit tests 
     } 
    } 
} 
Cuestiones relacionadas