NAME
Test::Tester - Help testing test modules built with Test::Builder
SYNOPSIS
use Test::Tester qw( tests => 5);
use Test::MyStyle;
Test::MyStyle::set_builder(Test::Tester->capture);
check_test(
sub {
is_mystyle_eq("this", "that", "not eq");
},
{
name => "not eq",
ok => 0,
diag => "Expected: 'this'\nGot: 'that'",
}
);
DESCRIPTION
If you have written a test module based on Test::Builder then Test::Tester makes it easier for you to test your tests. It provides an object from Test::Tester::Capture which inherits from Test::Builder but overrides the ok() and diag() methods so that it can prevent test output and also capture test results and diagnostics for examination.
HOW TO USE IT
Make your module use the Test::Tester::Capture object instead of the Test::Builder one. How to do this depends on your module but assuming that your module holds the Test::Builder object in $Test and that all your test routines access it through $Test then providing a function something like this
sub set_builder
{
$Test = shift;
}
should allow your test scripts to do
Test::YourModule::set_builder(Test::Tester->capture);
and after that any tests inside your module will captured.
TEST RESULTS
Some of the functions exported return catured test results. The results of each test is captured in a hash can include the following fields:
- tested
-
This is 1 if a test was actually carried, 0 otherwise
- ok
-
This will be true if the captured test passed, false otherwise
- name
-
This is the name of the test, as supplied to ok
- diag
-
Any diagnostics output by the test
EXPORTED FUNCTIONS
- cmp_result(\%result, \%expect, $name)
-
\%result is a ref to a test result hash. \%expect is a ref to an hash of expected values for the test result. cmp_result checks that a test result checks that the result was actually produced and that it matches the expected result. If any differences are found it outputs diagnostics. You may leave out the "name" or "diag" field from the expected result if you don't want to test them.
- cmp_results(\@results, \@expects, $name)
-
\@results is a ref to an array of test results. \@expects is a ref to an array of hash refs. cmp_results checks that the results match the expected results and if any differences are found it outputs diagnostics. It first checks that the number of elements in \@results and \@expects is the same. Then it goes through each result checking it against the expected result as in cmp_result() above.
- run_tests(\&test_sub, $name)
-
\&test_sub is a reference to a subroutine. $name is a string. run_tests runs the subroutine in $test_sub and returns an ARRAY of test results. It may run more than 1 test. If you only run 1 test it run_tests still returns an ARRAY.
- check_tests(\&test_sub, \@expects, $name)
-
\&test_sub is a reference to a subroutine. \@expect is a ref to an array of hash refs which are expected test results. check_test combines run_test and cmp_tests into a single call.
- check_test(\&test_sub, \%expect, $name)
-
\&test_sub is a reference to a subroutine. \%expect is a ref to an hash of expected values for the test result. check_test is a wrapper around check_tests. It combines run_tests and cmp_tests into a single call. It assumes that only a single test is run inside \&test_sub.
SEE ALSO
Test::Builder
AUTHOR
Plan handling lifted from Test::More, written by Michael G Schwern <schwern@pobox.com>.
The rest copywrite 2003 Fergal Daly <fergal@esatclear.ie>.
LICENSE
Under the same license as Perl itself
See http://www.perl.com/perl/misc/Artistic.html