2012-10-03 14 views
11

PHPUnit uruchamia metodę testową klasy setUp() przed uruchomieniem konkretnego testu.PHPUnit: Pobierz nazwę klasy testowej i metody z setUp()?

Załaduję specyficzne dla testu urządzenia dla każdego testu w klasie testowej i wolałbym tego nie robić. Idealnie chciałbym obsłużyć to automagicznie w metodzie setUp().

Jeśli metoda setUp() udostępnia nazwę klasy testowej i nazwę metody testowej, można to zrobić.

Czy nazwa klasy testu i metody, która ma zostać uruchomiona, jest dostępna dla mnie w metodzie setUp()?

Odpowiedz

26

Najprostszym sposobem uzyskania tego powinno być wywołanie $this->getName() w setUp().

<?php 

class MyTest extends PHPUnit_Framework_TestCase 
{ 
    public function setUp() { 
     var_dump($this->getName()); 
    } 


    public function testMethod() 
    { 
     $this->assertEquals(4,2+2,'OK1'); 
    } 
} 

i działa:

phpunit MyTest.php 

produkuje:

PHPUnit 3.7.1 by Sebastian Bergmann. 

.string(10) "testMethod" 


Time: 0 seconds, Memory: 5.00Mb 

OK (1 test, 1 assertion) 

Generalnie ja bym porady przed robi to, ale tam na pewno są przypadki, w których może to być dobry sposób robić rzeczy.

Inne opcje to posiadanie więcej niż jednej klasy testowej i posiadanie wszystkich testów, które wykorzystują te same urządzenia w jednej klasie.

Innym rozwiązaniem będzie posiadanie prywatnych pomocników setUp i wywoływanie odpowiedniego z testowego przypadku.

+1

@ Jon-dopchać, aby uzyskać nazwę bieżącego klasy testowej Samo 'PHPUnit' używa [get_class ($ this)] (http://php.net/manual/en/function.get-class.php), aby uzyskać nazwę klasy, w tym część przestrzeni nazw – xmojmr

1

Ewentualnie, jeśli nie chcesz, aby pokazać string(10) część jak odpowiedź na edorian można zrobić to tak:

protected function setUp() 
{ 
    echo $this->getName() . "\n"; 
} 
Powiązane problemy