2010-02-04 13 views
14

Esta pregunta está relacionada con this question I asked before. Tengo varios archivos de prueba (A.t, B.t, C.t, etc.) creados para probar sus respectivos módulos A, B, C &, etc. Pero cuando hago una prueba de prueba, ejecuta todas las pruebas. Pero, cuando estoy trabajando en un módulo específico, digamos B, me gustaría ejecutar pruebas unitarias para ese módulo. Cuando haya terminado con mis cambios, ejecutaré toda la suite.¿Cómo puedo ejecutar solo una prueba específica en una distribución de Perl?

Entonces, ¿hay alguna manera de hacer como make test B, que ejecutará solo las pruebas con B.t? Y cuando digo algo como "make test all" ejecuta todas las pruebas bajo el "t" dir? Gracias.

Respuesta

14

acabo de ejecutar la prueba que yo quiero correr:

% make; perl -Mblib t/B.t 

Usted puede hacer lo mismo con prove, también.


Eso -Mblib carga el módulo blib que simplemente añade blib/lib (y varios directorios especiales debajo de ella) a @INC para usted. Viene con Perl. prove debería hacer lo mismo con el interruptor -b.

Mi comando es en realidad dos partes:. La make (o ./Build para Module::Build Esto construye la fuente y se mueve módulos Perl y otros archivos en la "construcción de la biblioteca", o blib, como un paso intermedio en la instalación completa . Normalmente make test obras contra las versiones en blib y refresca que para mí. Desde que estoy probando por mi cuenta, me aseguro de que restauro blib mismo e incluirlo en su camino de búsqueda de módulos de Perl.

a pesar de la hecho de que sé todo esto, es posible que se sorprenda de que a menudo me olvido de hacerlo uno de esos pasos y prueba final contra la versión incorrecta de las cosas, ya sea la versión anterior completamente instalada (se olvidó -Mblib) o las antiguas fuentes de desarrollo (se olvidó make). Esto me lleva a la depuración de las declaraciones tales como:

print "No really, this is the Foo version. kthnxbye\n"; 
+0

Gracias, eso fue realmente simple. – John

2

ejecución de pruebas directamente a través de perl obras. El comando prove se diseñó para simplificar el proceso, guardar las pulsaciones de teclas y acortar el ciclo test-debug-test.

prove fue diseñado para trabajar en múltiples pruebas a la vez, lo que no se puede hacer invocando a través de perl. Por ejemplo, se puede hacer:

prove t/*.t 
prove t/  # Same as t/*.t 
prove t/dev/ # Run only tests in t/dev/ 
prove -r t/ # Runs all .t files in t/ and any directories below. 

El moderno prove también tiene muchas características para el manejo de suites de pruebas y la modificación de cómo se muestra la salida de toma de las pruebas.

prove --help le mostrará todas las opciones prove, y prove --man le mostrará la página de manual.

Cuestiones relacionadas