Authors of Test modules, listen up.

I've never quite properly described the purpose of Test::Builder.
Mostly its come off as a way to tweak Test::More's behavior a little
or to implement your own Test::More-ish library.

It does that, but that's not what's really neat.  And I only just
realized this talking to Barrie.

    Test::Builder lets you use *multiple* Test modules in a *single* test
    program!

Its a solution to the age-old problem of "Gee, I'd love to use this
one function from Test::Special::Purpose, but I need all the stuff
from Test::More, too."

If Test::Special::Purpose were built using Test::Builder then both
Test::More and Test::Special::Purpose share the same Test::Builder
object.  This means the test counter is kept in sync between the two.

    use Test::More tests => 3;
    use Test::Special::Purpose qw(defuse_camel_ok);

    # from Test::More.  Increments the Test::Builder counter to 1
    use_ok('Kamikaze::Camel');

    my $camel = Kamikaze::Camel->ATTACK;

    # also from Test::More.  Increments the counter to 2
    isa_ok( $camel, 'Kamikaze::Camel' );

    # from Test::Special::Purpose.  Uses the same Test::Builder object
    # as Test::More, so it increments to 3
    defuse_camel_ok( $camel, 'whew' );

Ta da!  No longer need there be a single, canonical Test module, just
a single, canonical backend.  So you can pick and choose with more
freedom what modules are right for your tests.


Candidates for this sort of thing would be CGI::Test, Test::Cmd,
Test::Unit, Test::Mail and ExtUtils::TBone.  And, of course, Barrie's
Test::Differences.


-- 

Michael G. Schwern   <[EMAIL PROTECTED]>    http://www.pobox.com/~schwern/
Perl Quality Assurance      <[EMAIL PROTECTED]>         Kwalitee Is Job One
Carpe canem!  Seize the dog!  This cannot be right.
        -- The Critic

Reply via email to