```{index} single: Test2::Manual::Testing::Planning ``` # Test2::Manual::Testing::Planning The many ways to set a plan. ## DESCRIPTION This tutorial covers the many ways of setting a plan. ## TEST COUNT The `plan()` function is provided by [Test2::Tools::Basic](../../Tools/Basic.md). This function lets you specify an exact number of tests to run. This can be done at the start of testing, or at the end. This cannot be done partway through testing. ```perl use Test2::Tools::Basic; plan(10); # 10 tests expected ... ``` ## DONE TESTING The `done_testing()` function is provided by [Test2::Tools::Basic](../../Tools/Basic.md). This function will automatically set the plan to the number of tests that were run. This must be used at the very end of testing. ```perl use Test2::Tools::Basic; ... done_testing(); ``` ## SKIP ALL The `skip_all()` function is provided by [Test2::Tools::Basic](../../Tools/Basic.md). This function will set the plan to `0`, and exit the test immediately. You may provide a skip reason that explains why the test should be skipped. ```perl use Test2::Tools::Basic; skip_all("This test will not run here") if ...; ... ``` ## CUSTOM PLAN EVENT A plan is simply an [Test2::Event::Plan](../../Event/Plan.md) event that gets sent to the current hub. You could always write your own tool to set the plan. ```perl use Test2::API qw/context/; sub set_plan { my $count = @_; my $ctx = context(); $ctx->send_event('Plan', max => $count); $ctx->release; return $count; } ``` ## SEE ALSO [Test2::Manual](../../Manual.md) - 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 ## AUTHORS - Chad Granum ## COPYRIGHT Copyright Chad Granum . 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/`