use strictures;
use Test::More;
# plan test count here or use done_testing($count).
is hello_world(), "Hello world!",
"Hello world is hello world";
# Naive test, will not catch your bug, and you have one.
cmp_ok get_number(), ">", 0,
"get_number() returns greater than zero";
subtest "Iterate on get_number()" => sub {
my $iterations = 10_000; # Higher confidence.
my $ok;
for ( 1 .. $iterations )
{
$ok++ if get_number() > 0;
}
my $msg = "get_number() returns greater than zero";
$ok == $iterations ?
pass($msg)
:
fail($msg . " - expected $iterations > 0, got $ok");
done_testing(1);
};
done_testing(3); # <- Either "plan" or delcare test count here!
exit 0;
sub hello_world {
"Hello world!";
}
sub get_number {
int(rand(1000));
}
####
~>prove my-test.t -v
ok 1 - Hello world is hello world
ok 2 - get_number() returns greater than zero
not ok 1 - get_number() returns greater than zero - expected 10000 > 0, got 9993
1..1
not ok 3 - Iterate on get_number()
1..3
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/3 subtests
Test Summary Report
-------------------
/home/moo/my-test.t (Wstat: 256 Tests: 3 Failed: 1)
Failed test: 3
Files=1, Tests=3, 0 wallclock secs ( 0.03 usr 0.01 sys + 0.03 cusr 0.00 csys = 0.07 CPU)
Result: FAIL
##
##
ok 1 - Hello world is hello world
ok 2 - get_number() returns greater than zero
ok 1 - get_number() returns greater than zero
1..1
ok 3 - Iterate on get_number()
1..3
ok
All tests successful.
Files=1, Tests=3, 0 wallclock secs ( 0.03 usr 0.01 sys + 0.03 cusr 0.00 csys = 0.07 CPU)
Result: PASS