2013-08-15 19 views
10

Poszukuję sposobu na uruchamianie testcase wiele razy z innym ustawieniem.Uruchamianie testowania PHPUnit wiele razy

Testuję klasę dostępu do bazy danych (dziesiątki metod testowania) i chcę przetestować ją w "trybie normalnym", a następnie w "trybie debugowania". Oba tryby muszą dawać te same wyniki testu.

Czy jest taka możliwość w ustawieniu testowym? Lub przesłonić metodę run()? Nie chcę pisać test dwa razy, oczywiście :)

Dziękuję

edit: GOT IT!

public function run(PHPUnit_Framework_TestResult $result = NULL) 
{ 
    if ($result === NULL) { 
     $result = $this->createResult(); 
    } 

    /** 
    * Run the testsuite multiple times with different debug level 
    */ 
    $this->debugLevel = 0; 
    print "Setting debug level to: " . $this->debugLevel . PHP_EOL; 
    $result->run($this); 

    $this->debugLevel = 8; 
    print "Setting debug level to: " . $this->debugLevel . PHP_EOL; 
    $result->run($this); 

    $this->debugLevel = 16; 
    print "Setting debug level to: " . $this->debugLevel . PHP_EOL; 
    $result->run($this); 

    return $result; 
} 

public function setUp() 
{ 
    parent::setUp(); 
    $this->myclass->setOptions('debug', $this->debugLevel); 
} 
+8

Zobacz funkcje '@ dataProvider', które emitują zestawy danych testowych. – Sven

+0

Znam dane użytkoweProviders :) Chcę tylko zmienić jedno proste ustawienie klasy, a następnie po prostu uruchomić WSZYSTKIE metody badań ponownie. Coś jak: run(); $ class-> setDebug (true); biegać(); –

+0

OK, zakładam, że to nie jest normalny przypadek. Czy próbowałeś rozszerzyć oryginalną klasę testową i zmieniając jedną rzecz w 'setUp()'. To powinno dziedziczyć cały kod testowy pod nową etykietą i uruchamiać dwa razy. – Sven

Odpowiedz

-1

PHPUnit oferuje testowe dekoratory. documentation ma powtarzający się dekorator jako przykład tego, co zrobić z dekoratorem. Dekorator byłby doskonałym sposobem implementacji zachowania w sposób wielokrotnego użytku bez zależności od podklasy PHPUnit_Framework_TestCase.