2010-01-01 23 views
5

Esto podría ser una pregunta estúpida, pero parece que no puedo hacerlo funcionar.Prueba de clases múltiples con PHPUnit

Estoy usando PHPUnit para probar. Actualmente tengo dos clases en un archivo llamado Tests.php:

class XTest extends PHPUnit_Framework_TestCase {...} 
class YTest extends PHPUnit_Framework_TestCase {...} 

Sin embargo, no puedo ejecutar ambas clases. Estoy ejecutando el siguiente comando en Windows:

php "C:\Program Files (x86)\PHP\phpunit" Tests 

y trata de ejecutar una clase de prueba llamada "Pruebas". En cambio, me gustaría ejecutar "XTest" e "YTest" y todo lo que está en el archivo. ¿Cómo podría ejecutar múltiples clases de prueba fácilmente?

Respuesta

3

The PHPUnit Docs explica los argumentos que espera el corredor de la prueba de línea de comandos.

En su caso, está proporcionando Tests, lo que significa que PHPUnit busca una clase Tests en un archivo Tests.php.

Con este conocimiento, es fácil ver que la mejor manera de organizar sus pruebas será escribir una clase de prueba por archivo, con los nombres de archivo igual a TestClassName.php.

Sin embargo, si por alguna razón usted no quiere hacer eso, puede proporcionar un argumento extra para decirle al corredor de prueba, que el archivo de clase de prueba se declara en:

php "C:\Program Files (x86)\PHP\phpunit" XTest Tests.php 
php "C:\Program Files (x86)\PHP\phpunit" YTest Tests.php 
+1

¿Pero existe una manera fácil de ejecutar múltiples pruebas? No quiero ejecutar 200 comandos diferentes para probar 200 clases ... – Tower

+5

Claro, si le das al corrector de pruebas un directorio como argumento, recorrerá el directorio ejecutando recursivamente todas las pruebas que encuentre. –

+0

Otra opción para probar ambas clases en un archivo: 1) cambiar el nombre de Tests.php a Test.php 2) ponerlo en un directorio separado, digamos 'pruebas' 3) ejecutar: pruebas phpunit – Andy

5

poner todos sus Las pruebas bajo el mismo directorio y solicitar PHPUnit para recorrerlas recursivamente funcionaría, pero si tiene sus pruebas bajo diferentes directorios o solo desea ejecutar porciones específicas de clases de prueba específicas, entonces el @group annotation podría ser lo que está buscando.

Cuando ejecuta sus pruebas, puede usar el php "C:\Program Files (x86)\PHP\phpunit" --group <insert_name_of_group_to_which_xtests_and_ytests_belong> y PHPUnit solo ejecutará aquellas pruebas que tengan @group insert_name_of_group_to_which_xtests_and_ytests_belong en su PHPDoc.

Cuestiones relacionadas