Test2::Suite(3) User Contributed Perl Documentation Test2::Suite(3)

# [NAME](#NAME)

Test2::Suite - Distribution with a rich set of tools built upon the Test2 framework.

# [DESCRIPTION](#DESCRIPTION)

Rich set of tools, plugins, bundles, etc built upon the Test2 testing library. If you are interested in writing tests, this is the distribution for you.

## [WHAT ARE TOOLS, PLUGINS, AND BUNDLES?](#WHAT_ARE_TOOLS,_PLUGINS,_AND_BUNDLES?)

[TOOLS](#TOOLS)

Tools are packages that export functions for use in test files. These functions typically generate events. Tools **SHOULD NEVER** alter behavior of other tools, or the system in general.

[PLUGINS](#PLUGINS)

Plugins are packages that produce effects, or alter behavior of tools. An example would be a plugin that causes the test to bail out after the first failure. Plugins **SHOULD NOT** export anything.

[BUNDLES](#BUNDLES)

Bundles are collections of tools and plugins. A bundle should load and re-export functions from Tool packages. A bundle may also load and configure any number of plugins.

If you want to write something that both exports new functions, and affects behavior, you should write both a Tools distribution, and a Plugin distribution, then a Bundle that loads them both. This is important as it helps avoid the problem where a package exports much-desired tools, but also produces undesirable side-effects.

# [INCLUDED BUNDLES](#INCLUDED_BUNDLES)

[Test2::V#](#Test2::V_)

These do not live in the bundle namespace as they are the primary ways to use Test2::Suite.

The current latest is Test2::V1.

```
    use Test2::V1;
    T2->ok(...);
    # Note: is does deep checking, unlike the 'is' from Test::More.
    $T2->is(...);
    ...
    T2->done_testing;
    
```

See Test2::V1 for complete documentation.

[Extended](#Extended)

**\** Deprecated \*\*** See Test2::V0 or Test2::V1.

```
    use Test2::Bundle::Extended;
    # strict and warnings are on for you now.
    ok(...);
    # Note: is does deep checking, unlike the 'is' from Test::More.
    is(...);
    ...
    done_testing;
    
```

This bundle includes every tool listed in the "INCLUDED TOOLS" section below, except for Test2::Tools::ClassicCompare. This bundle provides most of what anyone writing tests could need. This is also the preferred bundle/toolset of the Test2 author.

See Test2::Bundle::Extended for complete documentation.

[More](#More)

```
    use Test2::Bundle::More;
    use strict;
    use warnings;
    plan 3; # Or you can use done_testing at the end
    ok(...);
    is(...); # Note: String compare
    is_deeply(...);
    ...
    done_testing; # Use instead of plan
    
```

This bundle is meant to be a *mostly* drop-in replacement for Test::More. There are some notable differences to be aware of however. Some exports are missing: "eq\_array", "eq\_hash", "eq\_set", $TODO, "explain", "use\_ok", "require\_ok". As well it is no longer possible to set the plan at import: "use .. tests =&gt; 5". $TODO has been replaced by the todo() function. Planning is done using "plan", "skip\_all", or "done\_testing".

See Test2::Bundle::More for complete documentation.

[Simple](#Simple)

```
    use Test2::Bundle::Simple;
    use strict;
    use warnings;
    plan 1;
    ok(...);
    
```

This bundle is meant to be a *mostly* drop-in replacement for Test::Simple. See Test2::Bundle::Simple for complete documentation.

# [INCLUDED TOOLS](#INCLUDED_TOOLS)

[Basic](#Basic)

Basic provides most of the essential tools previously found in Test::More. However it does not export any tools used for comparison. The basic "pass", "fail", "ok" functions are present, as are functions for planning.

See Test2::Tools::Basic for complete documentation.

[Compare](#Compare)

This provides "is", "like", "isnt", "unlike", and several additional helpers. **Note:** These are all *deep* comparison tools and work like a combination of Test::More's "is" and "is\_deeply".

See Test2::Tools::Compare for complete documentation.

[ClassicCompare](#ClassicCompare)

This provides Test::More flavored "is", "like", "isnt", "unlike", and "is\_deeply". It also provides "cmp\_ok".

See Test2::Tools::ClassicCompare for complete documentation.

[Class](#Class)

This provides functions for testing objects and classes, things like "isa\_ok".

See Test2::Tools::Class for complete documentation.

[Defer](#Defer)

This provides functions for writing test functions in one place, but running them later. This is useful for testing things that run in an altered state.

See Test2::Tools::Defer for complete documentation.

[Encoding](#Encoding)

This exports a single function that can be used to change the encoding of all your test output.

See Test2::Tools::Encoding for complete documentation.

[Exports](#Exports)

This provides tools for verifying exports. You can verify that functions have been imported, or that they have not been imported.

See Test2::Tools::Exports for complete documentation.

[Mock](#Mock)

This provides tools for mocking objects and classes. This is based largely on Mock::Quick, but several interface improvements have been added that cannot be added to Mock::Quick itself without breaking backwards compatibility.

See Test2::Tools::Mock for complete documentation.

[Ref](#Ref)

This exports tools for validating and comparing references.

See Test2::Tools::Ref for complete documentation.

[Spec](#Spec)

This is an RSPEC implementation with concurrency support.

See Test2::Tools::Spec for more details.

[Subtest](#Subtest)

This exports tools for running subtests.

See Test2::Tools::Subtest for complete documentation.

[Target](#Target)

This lets you load the package(s) you intend to test, and alias them into constants/package variables.

See Test2::Tools::Target for complete documentation.

# [INCLUDED PLUGINS](#INCLUDED_PLUGINS)

[BailOnFail](#BailOnFail)

The much requested "bail-out on first failure" plugin. When this plugin is loaded, any failure will cause the test to bail out immediately.

See Test2::Plugin::BailOnFail for complete documentation.

[DieOnFail](#DieOnFail)

The much requested "die on first failure" plugin. When this plugin is loaded, any failure will cause the test to die immediately.

See Test2::Plugin::DieOnFail for complete documentation.

[ExitSummary](#ExitSummary)

This plugin gives you statistics and diagnostics at the end of your test in the event of a failure.

See Test2::Plugin::ExitSummary for complete documentation.

[SRand](#SRand)

Use this to set the random seed to a specific seed, or to the current date.

See Test2::Plugin::SRand for complete documentation.

[UTF8](#UTF8)

Turn on utf8 for your testing. This sets the current file to be utf8, it also sets STDERR, STDOUT, and your formatter to all output utf8.

See Test2::Plugin::UTF8 for complete documentation.

# [INCLUDED REQUIREMENT CHECKERS](#INCLUDED_REQUIREMENT_CHECKERS)

[AuthorTesting](#AuthorTesting)

Using this package will cause the test file to be skipped unless the AUTHOR\_TESTING environment variable is set.

See Test2::Require::AuthorTesting for complete documentation.

[EnvVar](#EnvVar)

Using this package will cause the test file to be skipped unless a custom environment variable is set.

See Test2::Require::EnvVar for complete documentation.

[Fork](#Fork)

Using this package will cause the test file to be skipped unless the system is capable of forking (including emulated forking).

See Test2::Require::Fork for complete documentation.

[RealFork](#RealFork)

Using this package will cause the test file to be skipped unless the system is capable of true forking.

See Test2::Require::RealFork for complete documentation.

[Module](#Module)

Using this package will cause the test file to be skipped unless the specified module is installed (and optionally at a minimum version).

See Test2::Require::Module for complete documentation.

[Perl](#Perl)

Using this package will cause the test file to be skipped unless the specified minimum perl version is met.

See Test2::Require::Perl for complete documentation.

[Threads](#Threads)

Using this package will cause the test file to be skipped unless the system has threading enabled.

**Note:** This will not turn threading on for you.

See Test2::Require::Threads for complete documentation.

# [SEE ALSO](#SEE_ALSO)

See the Test2 documentation for a namespace map. Everything in this distribution uses Test2.

Test2::Manual is the Test2 Manual.

# [CONTACTING US](#CONTACTING_US)

Many Test2 developers and users lurk on &lt;irc://irc.perl.org/#perl&gt;. We also have a slack team that can be joined by anyone with an "@cpan.org" email address &lt;https://perl-test2.slack.com/&gt; If you do not have an "@cpan.org" email you can ask for a slack invite by emailing Chad Granum &lt;exodist@cpan.org&gt;.

# [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-19 perl v5.44.0

---

Document: Test2::Suite(3pm) from perl-test-simple 1.302226-r0 (Chainguard OS)
Source: https://github.com/Test-More/test-more
