This is how to write the simplest one-file testage for PerlUnit, with the minimum of "package" shenanigans, but with the real assertions, like assert_matches, available.
To test MyModule.pl, get inside it and instrument its main() like this:
exit (main()) if $0 eq __FILE__;Now MyModule.pl will run normally, as a script, from a command line, but when bonded with another module it doesn't activate its main() routine.
Now write this inside TestMyModule.pl:
use strict; require 'MyModule.pl'; package TestMyModule; use base qw(Test::Unit::TestCase); sub new { my $self = shift()->SUPER::new(@_); # your state for fixture here return $self; } sub set_up { # provide fixture } sub tear_down { # clean up after test } sub test_foo { my $self = shift; $self->assert_matches(qr/expected result/, 'expected result'); } sub test_bar { # test the bar feature } use Test::Unit::TestRunner; my $testrunner = Test::Unit::TestRunner->new(); $testrunner->start('TestMyModule');And that's it. Now you can start writing ordinary test_*() cases on MyModule's contents.
This information was scattered across various help files, and not entirely obvious to the itinerant PerlLanguage dabbler...