Chapter 20. Advanced Testing
In this chapter, we offer a taste of some of the more popular test
modules, along with some advanced features of Test::More
. Unless we say otherwise, these modules
are not part of the Perl standard distribution (unlike Test::More
) and we’ll need to install them ourselves. You might feel a
bit cheated by this chapter since we’re going to say “See the module
documentation” quite a bit, but we’re gently nudging you out into the Perl
world. For much more detail, you can also check out Perl Testing: A
Developer’s Notebook, which covers the subject
further.
Skipping Tests
In some cases, we want to skip tests. For instance, some of our features may
only work for a particular version of Perl, a particular operating system,
or only work when optional modules are available. To skip tests, we do
much the same thing we did for the TODO
tests, but Test::More
does something much different.
We again use a bare block to create a section of code to skip, and
we label it with SKIP
. While testing,
Test::More
will not execute these tests, unlike the TODO
block where it ran them anyway. At the
start of the block, we call the skip
function to tell it why we want to skip the tests and how many tests we
want to skip.
In this example, we check if the Mac::Speech
module is installed before we try to test the say_it_aloud
method. If it isn’t, the eval
block returns false and we execute the skip
function:
SKIP:
{
skip
'Mac::Speech is not available'
,
1
unless
eval
{
require
Mac::
Speech ...
Get Intermediate Perl, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.