Test2::Require(3pm) Perl Programmers Reference Guide Test2::Require(3pm)

# [NAME](#NAME)

Test2::Require - Base class and documentation for skip-unless type test packages.

# [DESCRIPTION](#DESCRIPTION)

Test2::Require::* packages are packages you load to ensure your test file is skipped unless a specific requirement is met. Modules in this namespace may subclass Test2::Require if they wish, but it is not strictly necessary to do so.

# [HOW DO I WRITE A 'REQUIRE' MODULE?](#HOW_DO_I_WRITE_A_)

## [AS A SUBCLASS](#AS_A_SUBCLASS)

```
    package Test2::Require::Widget;
    use strict;
    use warnings;
    use base 'Test2::Require';
    sub HAVE_WIDGETS { ... };
    sub skip {
        my $class = shift;
        my @import_args = @_;
        if (HAVE_WIDGETS()) {
            # We have widgets, do not skip
            return undef;
        }
        else {
            # No widgets, skip the test
            return "Skipped because there are no widgets" unless HAVE_WIDGETS();
        }
    }
    1;
```

A subclass of Test2::Require simply needs to implement a skip() method. This method will receive all import arguments. This method should return undef if the test should run, and should return a reason for skipping if the test should be skipped.

## [STAND-ALONE](#STAND)

If you do not wish to subclass Test2::Require then you should write an import() method:

```
    package Test2::Require::Widget;
    use strict;
    use warnings;
    use Test2::API qw/context/;
    sub HAVE_WIDGETS { ... };
    sub import {
        my $class = shift;
        # Have widgets, should run.
        return if HAVE_WIDGETS();
        # Use the context object to create the event
        my $ctx = context();
        $ctx->plan(0, SKIP => "Skipped because there are no widgets");
        $ctx->release;
    }
    1;
```

# [SOURCE](#SOURCE)

The source code repository for Test2-Suite can be found at *https://github.com/Test-More/test-more/*.

# [MAINTAINERS](#MAINTAINERS)

[Chad Granum &lt;exodist@cpan.org&gt;](#Chad)

# [AUTHORS](#AUTHORS)

[Chad Granum &lt;exodist@cpan.org&gt;](#Chad~2)

# [COPYRIGHT](#COPYRIGHT)

Copyright Chad Granum &lt;exodist@cpan.org&gt;.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See *http://dev.perl.org/licenses/*

2026-10-21 perl v5.44.0

---

Document: Test2::Require(3pm) from perl 5.44.0-r2 (Chainguard OS)
Source: https://github.com/Perl/perl5.git
