perl testing frameworks

¿Hay buenas suites de pruebas automatizadas para Perl?



testing frameworks (14)

¿Puede alguien sugerir algún buen marco de prueba automatizado para Perl?



¿Conoce la utilidad ''probar'' (de App :: Prove)? Puede indicarle que ejecute todas las pruebas recursivamente en un directorio determinado, con o sin verbosidad, etc.


A partir de ahora, usamos Test :: More, pero el problema actual es que tenemos que ejecutar todos los archivos de prueba de forma manual para realizar pruebas. Lo que estoy buscando es un marco más automatizado que pueda hacer verificaciones incrementales / verificaciones de compilación, etc.

Una envoltura alrededor de Test :: More para eso sería ideal, pero cualquier cosa mejor y más funcional estaría bien también.

Voy a PerlUnit para ver si eso ayuda.


Iría por Test :: More o, en general, cualquier cosa que produzca TAP


Personalmente, me gusta Test :: Most, básicamente Test :: More con algunas funciones geniales añadidas.


Si está utilizando ExtUtils :: MakeMaker o Module :: Build , puede ejecutar todas sus pruebas automáticamente al ingresar el comando "make test" o "Build test", que ejecutará cualquier archivo * .t en su proyecto. subcarpeta.

Si no está utilizando ninguno de estos, entonces puede usar TAP :: Harness para automatizar la ejecución de múltiples scripts de prueba.

Para escribir las pruebas, use Test :: More o cualquiera de los módulos que otros hayan sugerido aquí.



tenemos que ejecutar todos los archivos de prueba manualmente para probar

Ciertamente, desea utilizar la prueba (ejecuta su prueba) y / o Module :: Build (crea su código y luego ejecuta las pruebas con el mismo código de arnés de prueba que se prueba internamente).


Eche un vistazo a los probadores de CPAN , que tienen muchas herramientas para realizar pruebas automatizadas. La mayoría de eso debería estar en CPAN, por lo que podrá modificarlo para satisfacer sus necesidades. También es muy fácil escribir su propio probador usando TAP :: Harness.

¿Qué es exactamente lo que necesita hacer y cómo está tratando de encajarlo en su proceso?


El marco de referencia de suite de prueba es Test :: Harness , que se encarga de controlar una ejecución de prueba, recopilar los resultados, etc.

Existen varios módulos para proporcionar ciertos tipos de pruebas, las más comunes de las cuales se pueden encontrar en Test :: Simple y Test :: More (ambas se incluyen en la distribución Test-Simple). Todo el espacio de nombres Test en el CPAN está dedicado a módulos especializados de pruebas unitarias, la mayoría de los cuales están diseñados para ejecutarse bajo Test :: Harness.

Por convención, las pruebas se almacenan en el directorio t / de un proyecto, y cada archivo de prueba usa la extensión de archivo .t; las pruebas se realizan comúnmente a través de

prove t/*.t

Las distribuciones de módulos suelen incluir un objetivo de creación llamado ''prueba'' que ejecuta el conjunto de pruebas antes de la instalación. De forma predeterminada, el proceso de instalación de CPAN requiere que las pruebas pasen después de la compilación antes de que se instale un módulo.


Para realizar pruebas automatizadas en Perl, eche un vistazo a Test :: Harness , que contiene la herramienta de prove .

La herramienta de prove se puede ejecutar con el siguiente comando:

prove -r -Ilib t

Esto probará recursivamente todos los archivos * .t en el directorio ''t /'', mientras agrega lib a la ruta de inclusión.


Realmente depende de lo que estás tratando de hacer, pero aquí hay algunos antecedentes para gran parte de esto.

En primer lugar, generalmente escribiría sus programas de prueba con Test :: More o Test :: Simple como el programa principal de pruebas:

use Test::More tests => 2; is 3, 3, ''basic equality should work''; ok !0, ''... and zero should be false'';

Internamente, se llama a Test :: Builder para generar esos resultados de prueba como TAP ( Test Anything Protocol ). Test :: Harness (una envoltura delgada alrededor de TAP :: Harness), lee e interpreta el TAP, diciéndote si tus pruebas pasaron o no. La herramienta "probar" mencionada anteriormente se incluye con Test :: Harness, así que digamos que guarde lo anterior en el directorio t / (el directorio de pruebas estándar de Perl) como "numbers.t", luego puede ejecutarlo con este comando:

prove --verbose t/numbers.t

O para ejecutar todas las pruebas en ese directorio (recursivamente, suponiendo que quiera descender a los subdirectorios):

prove --verbose -r t/

(--verbose, por supuesto, es opcional).

Como nota al margen, no use TestUnit. Mucha gente lo recomienda, pero fue abandonado hace mucho tiempo y no se integra con las herramientas de prueba modernas.


¿Has visto a smolder ?

"Agregador de prueba de humo utilizado por los desarrolladores y probadores para cargar (automatizado o manualmente) y ver pruebas de humo / regresión utilizando el Protocolo de prueba Anything. Los detalles y las tendencias se grafican y las notificaciones se proporcionan por correo electrónico o alimentaciones Atom".


Tu dijiste:

"Lo que estoy buscando es un marco más automatizado que pueda hacer pruebas incrementales / verificaciones de compilación, etc."

Todavía no estoy completamente seguro de lo que estás buscando. Como otros han mencionado, usted quiere ver cosas que se basan en Test :: Harness / TAP. La gran mayoría de la comunidad de pruebas de Perl usa ese marco, por lo que obtendrá mucho más soporte (y un código útil) al usar eso.

¿Puedes hablar un poco más sobre lo que quieres decir con "pruebas incrementales / verificaciones de compilación"?

Supongo que quiere dividir sus pruebas en grupos para que solo ejecute ciertos conjuntos de pruebas en determinadas circunstancias.

Hay un par de maneras de hacer esto. Lo más simple sería simplemente usar el sistema de archivos: divida los directorios de prueba para que tenga cosas como:

core/ database.t infrastructure.t style/ percritic.t ui/ something.t something-else.t

Y así sucesivamente ... puede usar la herramienta de "probar" de la línea de comandos para ejecutarlos todos, o solo ciertos directorios, etc.

demuestra que tiene muchas opciones útiles que le permiten elegir qué pruebas se ejecutan y en qué orden (por ejemplo, cosas como la orden más reciente fallida). Esto, por sí solo, probablemente lo llevará a lo que necesita.

(Por cierto, es importante obtener una versión reciente de Test :: Simple / Prove / etc de CPAN. Las versiones recientes tienen mucha, mucha más funcionalidad).

Si tiene una mentalidad OO, o tiene experiencia previa en marcos xUnit, entonces puede que quiera echar un vistazo a Test :: Class, que es un marco Perl xUnit construido sobre la capa TAP / Test :: Harness. Creo que es mucho mejor que PerlUnit, pero diría que desde que lo escribí :-)

Echa un vistazo a delicious para obtener más información sobre Test :: Class http://delicious.com/tag/Test::Class

Si esto no es lo que está buscando, ¿podría entrar un poco más en detalle sobre qué funcionalidad desea?

Aclamaciones,

Adrian