You're half way there then. Instead of using a single script that you keep changing, once you get your 'test' to run, copy it to a file with a .t extension and that's it.
Of course, using Test::More is a good choice for doing the assertions. Here's the difference between a normal test script, and a real test:
use warnings;
use strict;
use My::Module;
my ($x, $y) = My::Module->pairs();
print "ok" if $x == $y;
test:
use warnings;
use strict;
use Test::More;
use_ok('My::Module');
my ($x, $y) = My::Module->pairs();
is ($x, $y, "pairs() returns a pair that match");
done_testing();
The latter will tell you exactly what was expected and what failed if there's a fail. The former doesn't. Not much extra effort. So if you're testing your code with one-offs, save them to test files instead, and now that part of your code will be tested every time you run your suite.
Example test output from above on fail:
ok 1 - use My::Module;
not ok 2 - pairs() returns a pair that match
# Failed test 'pairs() returns a pair that match'
# at pairs.t line 11.
# got: '1'
# expected: '2'
1..2
# Looks like you failed 1 test of 2.
...because someone made a typo in the pairs() function:
sub pairs {
return (1, 2);
}
|