Perl Programming Documentation
Download Perl
Explore

Manual

- Overview
- Tutorials
- FAQs
- History / Changes
- License

Reference

- Language
- Functions
- Operators
- Special Variables
- Pragmas
- Utilities
- Internals
- Platform Specific

Modules

- A • B • C • D • E
- F • G • H • I • L
- M • N • O • P • S
- T • U • X

Tools

- Preferences

# Test::Builder::Module

Perl 5 version 26.0 documentation
Go to top
Show page index • Show recent pages
Recently read

# Test::Builder::Module

- NAME
- SYNOPSIS
- DESCRIPTION
  - Importing
  - Builder

# NAME

Test::Builder::Module - Base class for test modules

# SYNOPSIS

      # Emulates Test::Simple  package Your::Module;  my $CLASS = __PACKAGE__;  use parent 'Test::Builder::Module';  @EXPORT = qw(ok);  sub ok ($;$) {      my $tb = $CLASS->builder;      return $tb->ok(@_);  }    1;

# DESCRIPTION

This is a superclass for Test::Builder-based modules. It provides a handful of common functionality and a method of getting at the underlying Test::Builder object.

## Importing

Test::Builder::Module is a subclass of Exporter which means your module is also a subclass of Exporter. @EXPORT, @EXPORT_OK, etc... all act normally.

A few methods are provided to do the `use Your::Module tests => 23` part for you.

### import

Test::Builder::Module provides an `import()` method which acts in the same basic way as Test::More's, setting the plan and controlling exporting of functions and variables. This allows your module to set the plan independent of Test::More.

All arguments passed to `import()` are passed onto `Your::Module->builder->plan()` with the exception of `import =>[qw(things to import)]` .

        use Your::Module import => [qw(this that)], tests => 23;

says to import the functions `this()` and `that()` as well as set the plan to be 23 tests.

`import()` also sets the `exported_to()` attribute of your builder to be the caller of the `import()` function.

Additional behaviors can be added to your `import()` method by overriding `import_extra()` .

### import_extra

        Your::Module->import_extra(\@import_args);

`import_extra()` is called by `import()`. It provides an opportunity for you to add behaviors to your module based on its import list.

Any extra arguments which shouldn't be passed on to `plan()` should be stripped off by this method.

See Test::More for an example of its use.

NOTE This mechanism is VERY ALPHA AND LIKELY TO CHANGE as it feels like a bit of an ugly hack in its current form.

## Builder

Test::Builder::Module provides some methods of getting at the underlying Test::Builder object.

### builder

      my $builder = Your::Class->builder;

This method returns the Test::Builder object associated with Your::Class. It is not a constructor so you can call it as often as you like.

This is the preferred way to get the Test::Builder object. You should not get it via `Test::Builder->new` as was previously recommended.

The object returned by `builder()` may change at runtime so you should call `builder()` inside each function rather than store it in a global.

      sub ok {      my $builder = Your::Class->builder;      return $builder->ok(@_);  }

Page index

- NAME
- SYNOPSIS
- DESCRIPTION
  - Importing
  - Builder