How can I do unit testing in Perl?
PerlUnit TestingTestingPerl Problem Overview
I have been doing some OO Perl programming and I was wondering: which is the best way to perform unit tests?
So far I have been using the Test::Simple module to perform tests, but it feels insufficient for what I want.
Can you point me to some nice modules for that?
Perl Solutions
Solution 1 - Perl
I'd add my vote to picking up Test::More
before going any further in Perl testing. The Perl testing community is fairly well united around the Test Anything Protocol, and you'll want to play around with Test::More
to understand how it works and how tools like prove
and Test::Harness::Archive
can help automate and distribute testing.
If you want to just "jump right in", I think Test::Class
provides xTest facilities with a TAP backend. I haven't used it at all (I'm a Test::More
person myself), but it's very highly rated.
Solution 2 - Perl
Test::More should offer you more bang for your bucks once you get the hang of Test::Simple.
Solution 3 - Perl
Judging by your comments on melaos answer, I'd say Test::Class or Test::Unit is what you're looking for.
Solution 4 - Perl
Simple test example:
#!/usr/bin/perl -w
use strict;
use warnings 'all';
use Test::More plan => 4; # or use Test::More 'no_plan';
use_ok('My::Module', 'Loaded My::Module');
ok( my $obj = My::Module->new(), 'Can create instance of My::Module');
ok( $obj->value('hello'), 'Set value to hello' );
is( $obj->value => 'hello', 'value is still hello');
Solution 5 - Perl
Test::Class usage you can see in this example.