Test2:...esting(3perl) Perl Programmers Reference Guide Test2:...esting(3perl)
NAME
Test2::Manual::Testing - Hub for documentation about writing tests with
Test2.
DESCRIPTION
This document outlines all the tutorials and POD that cover writing
tests. This section does not cover any Test2 internals, nor does it
cover how to write new tools, for that see Test2::Manual::Tooling.
NAMESPACE MAP
When writing tests there are a couple namespaces to focus on:
Test2::Tools::*
This is where toolsets can be found. 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.
Test2::Plugins::*
This is where plugins live. Plugins should not export anything, but
instead will introduce or alter behaviors for Test2 in general.
These 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 as
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 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 modules 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.
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 markings 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/Test2-Suite/.
MAINTAINERS
Chad Granum <exodist@cpan.org>
AUTHORS
Chad Granum <exodist@cpan.org>
COPYRIGHT
Copyright 2018 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/
perl v5.40.1 2026-08-30 Test2:...esting(3perl)
Generated by dwww version 1.16 on Sat Oct 3 06:47:42 CEST 2026.