next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Práctica: Pruebas Sup: Pruebas en la Construcción Ant: Las Pruebas Err: Si hallas una errata ...

El Módulo test_harness y el guión prove

El módulo ExtUtils::Command::MM proporciona la función test_harness la cual tiene dos argumentos:
test_harness($verbose, @test_libs)
Lo que hace es ejecutar todas las pruebas usando un módulo denominado Test::Harness. Si verbose se pone a 1 se obtiene información mas completa:
:~/Lperl/src/threads/knapsack/Algorithm-Knap01DP$ PERL_DL_NONLAZY=1 /usr/bin/perl \
    "-MExtUtils::Command::MM" "-e" "test_harness(1, 'blib/lib', 'blib/arch')" t/*.t
t/01MartelloAndTothBook....1..11
ok 1 - use Algorithm::Knap01DP qw/Knap01DP ReadKnap/;;
ok 2 - ReadKnap knap21.dat
ok 3 - Knap01DP knap21.dat
ok 4 - ReadKnap knap22.dat
ok 5 - Knap01DP knap22.dat
ok 6 - ReadKnap knap23.dat
ok 7 - Knap01DP knap23.dat
ok 8 - ReadKnap knap25.dat
ok 9 - Knap01DP knap25.dat
ok 10
not ok 11 - Algorithm::Knap01DP->can('GenKnap') # TODO Randomly generated problem

#     Failed (TODO) test (t/01MartelloAndTothBook.t at line 44)
#     Algorithm::Knap01DP->can('GenKnap') failed
ok
All tests successful.
Files=1, Tests=11,  0 wallclock secs ( 0.08 cusr +  0.02 csys =  0.10 CPU)
El módulo Test::Harness controla a los otros módulos de la familia Test::. Exporta la función runtests(@test_files) la cual ejecuta todas los programas de prueba pasados en @test_files. La función runtests intercepta la salida de las pruebas y las interpreta. Se supone que toda prueba debe escribir primero la cadena 1..M donde M es el número de pruebas y después, por cada prueba la salida debe contener la cadena ok N, donde N es el numeral de la prueba. Cuando una prueba es TODO su salida debe contener la cadena # TODO después de not ok o de ok. El texto que sigue después de esto es la descripción de lo que se supone que debería hacerse.

La utilidad prove provee un acceso a las funcionalidades de Test:Harness y constituye una alternativa a make test durante el desarrollo del módulo. Veamos un ejemplo e uso:

~/Lperl/src/threads/knapsack/Algorithm-Knap01DP/t$ prove -I../lib 01MartelloAndTothBook.t
01MartelloAndTothBook....ok
All tests successful.
Files=1, Tests=11,  0 wallclock secs ( 0.07 cusr +  0.02 csys =  0.09 CPU)
La opción v activa el modo verbose:
$ prove -v -I../lib 01MartelloAndTothBook.t
01MartelloAndTothBook....1..11
ok 1 - use Algorithm::Knap01DP qw/Knap01DP ReadKnap/;;
ok 2 - ReadKnap knap21.dat
ok 3 - Knap01DP knap21.dat
ok 4 - ReadKnap knap22.dat
ok 5 - Knap01DP knap22.dat
ok 6 - ReadKnap knap23.dat
ok 7 - Knap01DP knap23.dat
ok 8 - ReadKnap knap25.dat
ok 9 - Knap01DP knap25.dat
ok 10
not ok 11 - Algorithm::Knap01DP->can('GenKnap') # TODO Randomly generated problem

#     Failed (TODO) test (01MartelloAndTothBook.t at line 44)
#     Algorithm::Knap01DP->can('GenKnap') failed
ok
All tests successful.
Files=1, Tests=11,  0 wallclock secs ( 0.11 cusr +  0.00 csys =  0.11 CPU)


next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Práctica: Pruebas Sup: Pruebas en la Construcción Ant: Las Pruebas Err: Si hallas una errata ...
Casiano Rodríguez León
2006-02-21