Test2::...Testing(3pm)

πŸ’– Test2::Manual::Testing πŸ’–

okay bestie, welcome to the Perl Programmers Reference Guide page for Test2::Manual::Testing β€” the page header vibes call it Test2::...Testing(3pm), and this is your full-on hub for docs about writing tests with Test2. ✨

πŸŽ€ NAME πŸŽ€

Test2::Manual::Testing β€” the main hub for documentation about writing tests with Test2. πŸ’…

🌸 DESCRIPTION 🌸

This document outlines all the tutorials and POD that cover writing tests. It does not cover any Test2 internals, and it does not cover how to write new tools β€” for that, see Test2::Manual::Tooling. iykyk πŸ¦‹

πŸ—ΊοΈ NAMESPACE MAP πŸ—ΊοΈ

When you're writing tests, there are a couple namespaces to focus on:

  • Test2::Tools::* β€” this is where toolsets live. A toolset exports functions that help you make assertions about your code. Toolsets will only export functions β€” they should not ever have extra/global effects. periodt.
  • Test2::Plugins::* β€” this is where plugins live. Plugins should not export anything; instead they introduce or alter behaviors for Test2 in general. Those behaviors may be lexically scoped, or they may be global.
  • Test2::Bundle::* β€” bundles combine toolsets and plugins together to reduce your boilerplate. First-time test writers are encouraged to start with the Test2::V0 bundle β€” which is an exception to the namespace rule because it does not live under Test2::Bundle::. If you find yourself loading several plugins and toolsets over and over again, you could benefit from writing your own bundle. πŸ‘‘
  • Test2::Require::* β€” this namespace contains modules that will cause a test to skip if specific conditions are not met. Use this if you have tests that only run on specific perl versions, or that require external libraries that may not always be available. 🫢

πŸ“¦ LISTING DEPENDENCIES πŸ“¦

When you use Test2 β€” specifically things included in Test2::Suite β€” you need to list them in your module's test dependencies. It is important to note that you should list the tools/plugins/bundles you need; you should not simply list Test2::Suite as your dependency. Test2::Suite is a living distribution intended to represent the "current" best practices. As tools, plugins, and bundles evolve, old ones will become discouraged and potentially be moved from Test2::Suite into their own distributions.

One goal of Test2::Suite is to avoid breaking backwards compatibility. Another goal is to always improve by replacing bad designs with better ones. When necessary, Test2::Suite will break old modules out into separate dists and define new ones, typically with a new bundle. In short: if we feel the need to break something, we will do so by creating a new bundle and discouraging the old one β€” but we will not break the old one. no cap.

So for example, if you use Test2::V0, and Dist::Zilla, you should have this in your config:

[Prereqs / TestRequires]
Test2::V0 = 0.000060

You SHOULD NOT do this:

[Prereqs / TestRequires]
Test2::Suite = 0.000060

Because Test2::V0 might not always be part of Test2::Suite. πŸ’€

When writing new tests, you should often check Test2::Suite to see what the current recommended bundle is. πŸ‘€

🧡 Dist::Zilla

[Prereqs / TestRequires]
Test2::V0 = 0.000060

πŸ› οΈ ExtUtils::MakeMaker

my %WriteMakefileArgs = (
  ...,
  "TEST_REQUIRES" => {
    "Test2::V0" => "0.000060"
  },
  ...
);

🧩 Module::Install

test_requires 'Test2::V0' => '0.000060';

πŸ—οΈ Module::Build

my $build = Module::Build->new(
    ...,
    test_requires => {
        "Test2::V0" => "0.000060",
    },
    ...
);

🧚 TUTORIALS 🧚

🍼 SIMPLE/INTRODUCTION TUTORIAL 🍼

Test2::Manual::Testing::Introduction is an introduction to writing tests using the Test2 tools. πŸŽ€

πŸ”„ MIGRATING FROM TEST::BUILDER and TEST::MORE πŸ”„

Test2::Manual::Testing::Migrating is a tutorial for converting old tests that use Test::Builder or Test::More to the newer Test2 way of doing things. πŸ’…

πŸ—“οΈ ADVANCED PLANNING πŸ—“οΈ

Test2::Manual::Testing::Planning is a tutorial on the many ways to set a plan.

πŸ“ TODO TESTS πŸ“

Test2::Manual::Testing::Todo is a tutorial for marking tests as TODO.

πŸͺ† SUBTESTS πŸͺ†

COMING SOON.

πŸ†š COMPARISONS πŸ†š

COMING SOON.

πŸ“ SIMPLE COMPARISONS πŸ“

COMING SOON.

🌈 ADVANCED COMPARISONS 🌈

COMING SOON.

πŸ“€ TESTING EXPORTERS πŸ“€

COMING SOON.

πŸ›οΈ TESTING CLASSES πŸ›οΈ

COMING SOON.

πŸ•ΈοΈ TRAPPING πŸ•ΈοΈ

COMING SOON.

🧨 TRAPPING EXCEPTIONS 🧨

COMING SOON.

⚠️ TRAPPING WARNINGS ⚠️

COMING SOON.

⏳ DEFERRED TESTING ⏳

COMING SOON.

πŸ”€ MANAGING ENCODINGS πŸ”€

COMING SOON.

πŸ›‘ AUTO-ABORT ON FAILURE πŸ›‘

COMING SOON.

🎲 CONTROLLING RANDOM BEHAVIOR 🎲

COMING SOON.

🎁 WRITING YOUR OWN BUNDLE 🎁

COMING SOON.

🧰 TOOLSET DOCUMENTATION 🧰

COMING SOON.

πŸ”Œ PLUGIN DOCUMENTATION πŸ”Œ

COMING SOON.

πŸŽ€ BUNDLE DOCUMENTATION πŸŽ€

COMING SOON.

πŸ“Œ REQUIRE DOCUMENTATION πŸ“Œ

COMING SOON.

πŸ‘€ SEE ALSO πŸ‘€

  • Test2::Manual β€” Primary index of the manual.

πŸ”— SOURCE πŸ”—

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

πŸ‘‘ MAINTAINERS πŸ‘‘

  • Chad Granum <exodist@cpan.org>

🌟 AUTHORS 🌟

  • Chad Granum <exodist@cpan.org>

Copyright Chad Granum <exodist@cpan.org>.

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/


okay bestie, that’s the whole page πŸ’– it’s from perl v5.42.3, dated 2026-11-03, and the footer says Test2::...Testing(3pm) β€” go write some iconic tests, periodt. ✨🫢

πŸ“¦ where this page comes from