#NAME
Test2::Suite - Distribution with a rich set of tools built upon the Test2 framework.
#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?
- 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 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 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 effects 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
- 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::V0.
use Test2::V0; # 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::V0 for complete documentation.
- Extended
-
** Deprecated ** See Test2::V0
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
-
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 => 5
.$TODO
has been replaced by thetodo()
function. Planning is done usingplan
,skip_all
, ordone_testing
.See Test2::Bundle::More for complete documentation.
- 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
- 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
-
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'sis
andis_deeply
.See Test2::Tools::Compare for complete documentation.
- ClassicCompare
-
This provides Test::More flavored
is
,like
,isnt
,unlike
, andis_deeply
. It also providescmp_ok
.See Test2::Tools::ClassicCompare for complete documentation.
- Class
-
This provides functions for testing objects and classes, things like
isa_ok
.See Test2::Tools::Class for complete documentation.
- 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
-
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
-
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
-
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
-
This exports tools for validating and comparing references.
See Test2::Tools::Ref for complete documentation.
- Spec
-
This is an RSPEC implementation with concurrency support.
See Test2::Tools::Spec for more details.
- Subtest
-
This exports tools for running subtests.
See Test2::Tools::Subtest for complete documentation.
- 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
- 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
-
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
-
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
-
Use this to set the random seed to a specific seed, or to the current date.
See Test2::Plugin::SRand for complete documentation.
- 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
- 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
-
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
-
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
-
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
-
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
-
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
-
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 the Test2 documentation for a namespace map. Everything in this distribution uses Test2.
Test2::Manual is the Test2 Manual.
#CONTACTING US
Many Test2 developers and users lurk on irc://irc.perl.org/#perl. We also have a slack team that can be joined by anyone with an @cpan.org
email address https://perl-test2.slack.com/ If you do not have an @cpan.org
email you can ask for a slack invite by emailing Chad Granum <exodist@cpan.org>.
#SOURCE
The source code repository for Test2-Suite 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/