2012-10-03 13 views
11

PHPUnit ejecuta el método setUp() de una clase de prueba antes de ejecutar una prueba específica.PHPUnit: Obtener el nombre de la clase de prueba y el método de setUp()?

Cargo aparatos específicos de prueba para cada prueba en una clase de prueba y preferiría no tener que hacerlo explícitamente. Idealmente, me gustaría manejar esto automágicamente en el método setUp().

Si el método setUp() pone a disposición el nombre de la clase de prueba y el nombre del método de prueba, esto se puede hacer.

¿Está disponible para mí el nombre de la clase de prueba y el método que está a punto de ejecutarse en el método setUp()?

Respuesta

26

La manera más fácil de lograr esto debería ser llamando al $this->getName() en setUp().

<?php 

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


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

y en funcionamiento:

phpunit MyTest.php 

produce:

PHPUnit 3.7.1 by Sebastian Bergmann. 

.string(10) "testMethod" 


Time: 0 seconds, Memory: 5.00Mb 

OK (1 test, 1 assertion) 

En general me gustaría consejos en contra de hacer esto, pero seguramente hay casos en los que puede ser una buena manera de para hacer cosas.

Otras opciones serían tener más de una clase de prueba y tener todas las pruebas que usan los mismos dispositivos en una sola clase.

Otro sería tener ayudantes privados de configuración y llamar al apropiado del caso de prueba.

+1

@ Jon-Cram con el fin de obtener el nombre de la clase de prueba actual , 'PHPUnit' usa en sí mismo [get_class ($ this)] (http://php.net/manual/en/function.get-class.php) para obtener el nombre de la clase, incluida la parte del espacio de nombres – xmojmr

1

alternativa, si no desea mostrar la parte string(10) al igual que en la respuesta de edorian puede hacerlo de esta manera:

protected function setUp() 
{ 
    echo $this->getName() . "\n"; 
} 
Cuestiones relacionadas