NAME
Test::Tutorial::WritingTests - A Complete Introduction to writing tests
What are tests?
Tests are code that verifies other code produces the expected output for a given input. An example may help:
# This code will die if math doesbn't work.
die "Math is broken" unless 1 + 1 == 2;
However it is better to use a framework intended for testing:
ok( 1 + 1 == 2, "Math Works" );
This will tell you if the test passes or fails, and will give you extra information like the name of the test, and what line it was written on if it fails.
Simple example.
use Test::More;
ok( 1, "1 is true, this test will pass" );
ok( 0, "0 is false, this test will fail" );
is( 1 + 1, 2, "1 + 1 == 2" );
my @array = first_3_numbers();
is_deeply(
\@array,
[ 1, 2, 3 ],
"function returned an array of 3 numbers"
);
# When you are done, call this to satisfy the plan
done_testing
See Test::More for ok()
, is()
, is_deeply()
, and several other useful tools.
What is a plan?
You need to declare how many tests should be seen, this is to ensure your test does not die partway through. There are 2 ways to declare a plan, 1 way to decline to make a plan, and a way to skip everything.
- done_testing
-
use Test::More; ok(1, "pass"); done_testing;
Using done_testing means you do not need to update the plan every time you change your test script.
- Test count
-
At import:
use Test::More tests => 1; ok(1, "pass");
Plan on its own:
use Test::More; plan tests => 1; ok(1, "pass");
- No Plan
-
use Test::More 'no_plan';
No plan, no way to verify everything ran.
- skip_all
-
use Test::More skip_all => "We won't run these now";
Just don't do anything.
See Also
Writing tools.
See Test::Tutorial::WritingTools
SOURCE
The source code repository for Test::More can be found at http://github.com/Test-More/test-more/.
MAINTAINER
AUTHORS
The following people have all contributed to the Test-More dist (sorted using VIM's sort function).
- Chad Granum <exodist@cpan.org>
- Fergal Daly <fergal@esatclear.ie>>
- Mark Fowler <mark@twoshortplanks.com>
- Michael G Schwern <schwern@pobox.com>
- 唐鳳
COPYRIGHT
There has been a lot of code migration between modules, here are all the original copyrights together:
- Test::Stream
- Test::Stream::Tester
-
Copyright 2014 Chad Granum <exodist7@gmail.com>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See http://www.perl.com/perl/misc/Artistic.html
- Test::Simple
- Test::More
- Test::Builder
-
Originally authored by Michael G Schwern <schwern@pobox.com> with much inspiration from Joshua Pritikin's Test module and lots of help from Barrie Slaymaker, Tony Bowden, blackstar.co.uk, chromatic, Fergal Daly and the perl-qa gang.
Idea by Tony Bowden and Paul Johnson, code by Michael G Schwern <schwern@pobox.com>, wardrobe by Calvin Klein.
Copyright 2001-2008 by Michael G Schwern <schwern@pobox.com>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See http://www.perl.com/perl/misc/Artistic.html
- Test::use::ok
-
To the extent possible under law, 唐鳳 has waived all copyright and related or neighboring rights to Test-use-ok.
This work is published from Taiwan.
- Test::Tester
-
This module is copyright 2005 Fergal Daly <fergal@esatclear.ie>, some parts are based on other people's work.
Under the same license as Perl itself
See http://www.perl.com/perl/misc/Artistic.html
- Test::Builder::Tester
-
Copyright Mark Fowler <mark@twoshortplanks.com> 2002, 2004.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.