Chapter 7. Testing

7.5. Building your own test libraries

Create your test library

This code goes in the t/lib/test directory of your project.

package test::Something;

use Test2::API;
use Exporter::Shiny qw/test_something/;

sub test_something {
    my ($something, $name) = @_;

    my $ctx = Test2::API::context();

    my ($success, $error) = check($something);
    if ($success) {
    else {


sub check { ... }


The context object represents the context in which a test takes place (File and Line Number), and provides a quick way to generate events from that context. For more details see Test2::API::Context.

Use your test library

This code goes in t/foo.t:

use Test2::V0;
use Test::Lib; # Add t/lib to @INC
use test::Something qw/test_something/;