2009-09-12 25 views
6

Tengo una clase de prueba PHPUnit que me gustaría ignorar de una ejecución de prueba. Sé que puedo hacerlo al renombrarlo para que no contenga la palabra Prueba en su nombre de archivo, pero prefiero no hacerlo, ya que enturbia las aguas de control de origen más de lo que me gustaría.Haciendo que PHPUnit ignore las cosas?

¿Alguien tiene alguna sugerencia?

Respuesta

15

Hay un par de opciones para el comando phpunit que pueden ayudar a definir que prueba que debe y no se debe ejecutar:

$ phpunit --help 
PHPUnit 3.4.0beta5 by Sebastian Bergmann. 

Usage: phpunit [switches] UnitTest [UnitTest.php] 
     phpunit [switches] <directory> 
... 
    --filter <pattern>  Filter which tests to run. 
    --group ...    Only runs tests from the specified group(s). 
    --exclude-group ...  Exclude tests from the specified group(s). 
    --list-groups   List available test groups. 
... 

Aquellos probablemente no permitirá especificar exactamente lo que quería ... Pero podrían ayudar.

Para más detalles, ver The Command-Line Test Runner


Sobre todo, me gusta la función de grupo: sólo tiene que utilizar una etiqueta @group en el phpdoc de sus pruebas, para volver a agruparlos (por ejemplo, un grupo por "porción de funcionalidad"); y, después, puede usar las opciones --group o --exclude-group en la línea de comando para especificar qué pruebas deben o no ejecutarse.

En su caso, si no se puede modificar las pruebas, tal vez la opción --filter puede ayudar, dependiendo de cómo sus pruebas se nammed (es decir, si hay una manera de identificar a los que desea ejecutar):

--filter
sólo se ejecuta pruebas cuyo nombre coincide con el patrón dado. El patrón puede ser , ya sea el nombre de una prueba individual o una expresión regular que coincida con nombres de pruebas múltiples.


Otra solución, si no siempre está cambiando los "grupos" de pruebas para correr, podría ser el uso de una prueba de baño que sólo incluye las pruebas que desee ejecutar.

Por ejemplo, eche un vistazo a Composing a Test Suite Using XML Configuration.

+0

La anotación de grupo funcionará muy bien. Gracias. –

+0

De nada :-) Diviértete! –

+0

He configurado '@group slow' en todas mis pruebas lentas y he usado un archivo' phpunit.xml', pero las excluyo de manera predeterminada. Si quiero incluirlos de nuevo, simplemente ejecuto 'phpunit --no-configuration --group slow'. – dave1010

1

He buscado el manual completo PHPUnit y no he encontrado nada. Puede ignorar el código a los efectos de la cobertura de prueba, pero eso es todo. Sin embargo, este ChangeLog (en un tenedor aparente) menciona que "Ignorar los nombres de los archivos de prueba con el prefijo ." No lo he intentado, pero vale la pena intentarlo. O podrías comentar la prueba. Supongo que le gustaría que algo como NUnit ofrezca dónde informará las pruebas ignoradas; No encontré nada de eso.

+0

Gracias por la investigación, ya lo había hecho, pero renombrar el archivo no es algo que sea propenso a hacer. –

+0

* con prefijo. * ¿Cuál es el prefijo? ¿Un punto? –

+0

Sí, '.'. Revisando el enlace roto también. – TrueWill

4

Me doy cuenta de que esta es una vieja pregunta con una respuesta aceptada, así que espero no entrometerme, pero solo quería señalar por el bien de compleción que es posible skip tests. Las pruebas incompletas y omitidas no son ejecutadas por PHPUnit.

Por supuesto, eso está en un nivel por prueba; sin embargo, puede consolidarlo poniéndolo en la clase 'setUp().

Solo un mano a mano.

+0

Buena idea. Lo tendré en cuenta. –

+0

Tenga en cuenta que los accesorios aún se insertan para las pruebas omitidas, que pueden ser una de las partes más lentas de las pruebas en ejecución –

6

simplemente cambiar el nombre del método:

testFunctionality() {// bla }

a

ignore_ testFunctionality() {// bla }

1

Prefiero usar nombres normales para mis funciones y poner en el docBloc función

/** 
* @test 
*/ 
public function getDetails() 
{} 

lo tanto, cuando no quiero que esta prueba se ejecute, acabo de quitar ese @test. Además, tal vez encuentre algo útil aquí PHPUnit - The XML Configuration File Agregué en las pruebas de la etiqueta "exclude" que no quería que fpunit lo cubriera.

Cuestiones relacionadas