Je ne parlerais pas du modèle classique d’organisation du code en Perl :

  • toute la logique dans un module
  • un ou des scripts qui ne font qu’utiliser le module
  • les tests qui font eux aussi appel au module

Ce qui implique d’avoir au moins 3 fichiers différents …

Dans mon cas, j’ai un simple script perl que je souhaite écrire en TDD.

mon_script.pl

#!/usr/bin/perl -w
use strict;
use warning;

sub run {
  return "OK";
}

run() unless caller();
1;

mon_script.t

#!/usr/bin/perl -w
use strict;
use warnings;
use Test::More;
require "./mon_script.pl";

my $ret = run();
is($ret, "OK");
is($ret, "KO");


done_testing()

Lancer mon_script.t pour voir le résultat des tests :

ok 1
not ok 2
#   Failed test at ./mon_script.t line 8.
#          got: 'OK'
#     expected: 'KO'
1..2
# Looks like you failed 1 test of 2.

Liens

http://lampzone.wordpress.com/2012/04/03/pbp-part2-unit-test-your-perl-script/