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