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

Jak mogę ustawić pierwszy i drugi pakiet testsuite dla różnych bootstrapów?PHPunit inny bootstrap dla wszystkich testsuites

Odpowiedz

2

Nie możesz.

PHPUnit pozwala tylko określić jeden plik bootstrap i musisz skonfigurować wszystko tak, aby każdy przypadek testowy każdego testsuite mógł zostać wykonany, a PHPUnit nie ma sposobu uruchomienia kodu "setup" dla każdego testsuite z pliku bootstrap xml plik.

Podczas korzystania z klas odradzających się w phpunit 3.6, TestSuite można to zrobić w tych, ale moja sugestia będzie po prostu uruchomić cały twój ogólny kod bootstrap w bootstrap.php i jeśli potrzebujesz specjalnej konfiguracji dla testów w app1 i w app2, aby odziedziczyć po App1_TestCase.

Powinienem być App1 naprawdę całą aplikacją, sugerowałbym posiadanie dwóch osobnych projektów z ich własnymi testami i instalacyjnym kodem i nie próbującymi uruchomić ich w jednym phpunit bieg.

11

można utworzyć dwa inny plik bootstrap i dwa różne pliki xml konfiguracji

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> 

Aby uruchomić:

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

Jeśli jedno badanie uruchomić wiele bardziej, że druga (słownie app1), nazwij phpunit.xml xml i można po prostu uruchomić

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

zrobić to z testów jednostkowych/integracyjnych.

+0

Nie sądzę, że jest to dobry pomysł, bo mają 10 różnych plików bootstrap, które są potrzebne, w oparciu o Twoje rozwiązanie, aby utworzyć 10 plików phpunitblabla.xml – smarber

13

To, co zrobiłem, to mieć słuchacza.

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> 

Następnie 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 
     } 
    } 
}