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)