Test::Unit::TestSuite.3pm

Langue: en

Version: 2005-08-01 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

NAME

Test::Unit::TestSuite - unit testing framework base class

SYNOPSIS

     package MySuite;
 
     use base qw(Test::Unit::TestSuite);
 
     sub name { 'My very own test suite' } 
     sub include_tests { qw(MySuite1 MySuite2 MyTestCase1 ...) }
 
 

This is the easiest way of building suites; there are many more. Read on ...

DESCRIPTION

This class provides the functionality for building test suites in several different ways.

Any module can be a test suite runnable by the framework if it provides a "suite()" method which returns a "Test::Unit::TestSuite" object, e.g.

     use Test::Unit::TestSuite;
 
     # more code here ...
 
     sub suite {
         my $class = shift;
 
         # Create an empty suite.
         my $suite = Test::Unit::TestSuite->empty_new("A Test Suite");
         # Add some tests to it via $suite->add_test() here
 
         return $suite;
     }
 
 

This is useful if you want your test suite to be contained in the module it tests, for example.

Alternatively, you can have ``standalone'' test suites, which inherit directly from "Test::Unit::TestSuite", e.g.:

     package MySuite;
 
     use base qw(Test::Unit::TestSuite);
 
     sub new {
         my $class = shift;
         my $self = $class->SUPER::empty_new();
         # Build your suite here
         return $self;
     }
 
     sub name { 'My very own test suite' }
 
 

or if your "new()" is going to do nothing more interesting than add tests from other suites and testcases via "add_test()", you can use the "include_tests()" method as shorthand:

     package MySuite;
 
     use base qw(Test::Unit::TestSuite);
 
     sub name { 'My very own test suite' } 
     sub include_tests { qw(MySuite1 MySuite2 MyTestCase1 ...) }
 
 

This is the easiest way of building suites.

CONSTRUCTORS

empty_new ([NAME])

     my $suite = Test::Unit::TestSuite->empty_new('my suite name');
 
 

Creates a fresh suite with no tests.

new ([ CLASSNAME | TEST ])

If a test suite is provided as the argument, it merely returns that suite. If a test case is provided, it extracts all test case methods from the test case (see ``list_tests'' in Test::Unit::TestCase) into a new test suite.

If the class this method is being run in has an "include_tests" method which returns an array of class names, it will also automatically add the tests from those classes into the newly constructed suite object.

METHODS

name()

Returns the suite's human-readable name.

names()

Returns an arrayref of the names of all tests in the suite.

list (SHOW_TESTCASES)

Produces a human-readable indented lists of the suite and the subsuites it contains. If the first parameter is true, also lists any testcases contained in the suite and its subsuites.

add_test (TEST_CLASSNAME | TEST_OBJECT)

You can add a test object to a suite with this method, by passing either its classname, or the object itself as the argument.

Of course, there are many ways of getting the object too ...

     # Get and add an existing suite.
     $suite->add_test('MySuite1');
 
     # This is exactly equivalent:
     $suite->add_test(Test::Unit::TestSuite->new('MySuite1'));
 
     # So is this, provided MySuite1 inherits from Test::Unit::TestSuite.
     use MySuite1;
     $suite->add_test(MySuite1->new());
 
     # Extract yet another suite by way of suite() method and add it to
     # $suite.
     use MySuite2;
     $suite->add_test(MySuite2->suite());
     
     # Extract test case methods from MyModule::TestCase into a
     # new suite and add it to $suite.
     $suite->add_test(Test::Unit::TestSuite->new('MyModule::TestCase'));
 
 

AUTHOR

Copyright (c) 2000-2002, 2005 the PerlUnit Development Team (see Test::Unit 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::TestRunner
*
Test::Unit::TkTestRunner
*
For further examples, take a look at the framework self test collection (t::tlib::AllTests).