# Test::Unit::Procedural - Procedural style unit testing interface - perldoc - [phpMan]

## NAME
    [Test::Unit::Procedural](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3AProcedural/markdown) - Procedural style unit testing interface

## SYNOPSIS
        use [Test::Unit::Procedural](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3AProcedural/markdown);

        # your code to be tested goes here

        sub foo { return 23 };
        sub bar { return 42 };

        # define tests

        sub test_foo { assert(foo() == 23, "Your message here"); }
        sub test_bar { assert(bar() == 42, "I will be printed if this fails"); }

        # set_up and tear_down are used to
        # prepare and release resources need for testing

        sub set_up    { print "hello world\n"; }
        sub tear_down { print "leaving world again\n"; }

        # run your test

        create_suite();
        run_suite();

## DESCRIPTION
    [Test::Unit::Procedural](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3AProcedural/markdown) is the procedural style interface to a sophisticated unit testing
    framework for Perl that is derived from the JUnit testing framework for Java by Kent Beck and
    Erich Gamma. While this framework is originally intended to support unit testing in an
    object-oriented development paradigm (with support for inheritance of tests etc.),
    [Test::Unit::Procedural](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3AProcedural/markdown) is intended to provide a simpler interface to the framework that is more
    suitable for use in a scripting style environment. Therefore, [Test::Unit::Procedural](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3AProcedural/markdown) does not
    provide much support for an object-oriented approach to unit testing - if you want that, please
    have a look at [Test::Unit::TestCase](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3ATestCase/markdown).

    You test a given unit (a script, a module, whatever) by using [Test::Unit::Procedural](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3AProcedural/markdown), which
    exports the following routines into your namespace:

    assert()
        used to assert that a boolean condition is true

### create_suite
        used to create a test suite consisting of all methods with a name prefix of "test"

### run_suite
        runs the test suite (text output)

### add_suite
        used to add test suites to each other

    For convenience, create_suite() will automatically build a test suite for a given package. This
    will build a test case for each subroutine in the package given that has a name starting with
    "test" and pack them all together into one TestSuite object for easy testing. If you don't give
    a package name to create_suite(), the current package is taken as default.

    Test output is one status line (a "." for every successful test run, or an "F" for any failed
    test run, to indicate progress), one result line ("OK" or "!!!FAILURES!!!"), and possibly many
    lines reporting detailed error messages for any failed tests.

    Please remember, [Test::Unit::Procedural](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3AProcedural/markdown) is intended to be a simple and convenient interface. If
    you need more functionality, take the object-oriented approach outlined in [Test::Unit::TestCase](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3ATestCase/markdown).

## AUTHOR
    Copyright (c) 2000-2002, 2005 the PerlUnit Development Team (see [Test::Unit](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit/markdown) or the AUTHORS file
    included in this distribution).

    All rights reserved. This program is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

## SEE ALSO
    *   [Test::Unit::TestCase](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3ATestCase/markdown)

    *   the procedural style examples in the examples directory

