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 live online training, plus books, videos, and digital content from nearly 200 publishers.