2011-05-28 15 views
9

Parece que simplemente poner un say, print, etc. en un .t no funciona. La salida está oculta. Entonces, cuando se usan Test::More y Test::Tester, ¿cómo puedo simplemente imprimir algo? Quiero esto para poder jugar con algún código y determinar cómo probarlo. nota: está bien si se envía a stderr o solo se puede ver usando verbose. También me sequé usando diag pero eso no pareció funcionar en ningún lugar de la prueba.¿Cómo puede simplemente enviar información a stdout en una prueba?

Respuesta

13

Si ejecuta un script de prueba directamente, verá el resultado de print - las pruebas son solo código Perl. Sin embargo, si ejecuta las pruebas con un arnés, lo que ve en la salida estará determinado por el arnés, especialmente su nivel de detalle, y por si imprime en STDOUT o STDERR.

Por otra manera de imprimir mensajes dentro de las pruebas, consulte Diagnostics en la documentación para Test::More, en particular:

diag(...); 
note(...); 

Experimentando con un guión como este ilustrarán rápidamente cómo funcionan las cosas:

# Example usages: 
#  perl  some_test.t # We see everything in output. 
#  prove some_test.t # We see only diag() and STDERR. 
#  prove -v some_test.t # Everything again. 

# In some_test.t 
use strict; 
use warnings; 
use Test::More; 

pass; 

diag("diag()"); 
note("note()"); 
print  "STDOUT\n"; 
print STDERR "STDERR\n"; 

done_testing; 
+0

I de alguna manera se perdió totalmente la función 'nota' en los documentos – xenoterracide

Cuestiones relacionadas