Test::Unit::Lite(3pm)
πΈ Test::Unit::Lite(3pm) β NAME πΈ
okay so bestie, Test::Unit::Lite is literally Unit testing without external dependencies π
β¨
β¨ SYNOPSIS β¨
Bundling the Test::Unit::Lite as a part of package distribution:
perl -MTest::Unit::Lite -e bundle
Running all test units:
perl -MTest::Unit::Lite -e all_tests
Using as a replacement for Test::Unit:
package FooBarTest;
use Test::Unit::Lite; # unnecessary if module isn't directly used
use base 'Test::Unit::TestCase';
sub new {
my $self = shift()->SUPER::new(@_);
# your state for fixture here
return $self;
}
sub set_up {
# provide fixture
}
sub tear_down {
# clean up after test
}
sub test_foo {
my $self = shift;
my $obj = ClassUnderTest->new(...);
$self->assert_not_null($obj);
$self->assert_equals('expected result', $obj->foo);
$self->assert(qr/pattern/, $obj->foobar);
}
sub test_bar {
# test the bar feature
}
π¦ DESCRIPTION π¦
This framework gives you a lighter version of the Test::Unit framework. It implements some of the Test::Unit classes and methods needed to run test units. Test::Unit::Lite tries to be compatible with the public API of Test::Unit. It doesn't implement all classes and methods at 100%, and only those necessary to run tests are available.
Test::Unit::Lite can be distributed as a part of a package distribution, so the package can be distributed without dependency on modules outside the standard Perl distribution. Test::Unit::Lite is provided as a single file π«Ά
π Bundling the Test::Unit::Lite as a part of package distribution
The Test::Unit::Lite framework can be bundled into the package distribution. Then the Test::Unit::Lite module is copied to the inc directory of the source directory for the package distribution.
π FUNCTIONS π
bundleβ CopiesTest::Unit::Litemodules into theincdirectory. Creates missing subdirectories if needed. Silently overwrites a previous module if one was existing.all_testsβ Creates a new test runner for theTest::Unit::Lite::AllTestssuite, which searches for test units in thet/tlibdirectory.
π CLASSES π
π§ Test::Unit::TestCase
This is a base class for a single unit test module. The user's unit test module can override the default methods that are simple stubs.
The MESSAGE argument is optional and is included in the default error message when the assertion is false.
newβ The default constructor which just blesses an empty anonymous hash reference.set_upβ This method is called at the start of each test unit processing. It is an empty method and can be overridden in a derived class.tear_downβ This method is called at the end of each test unit processing. It is an empty method and can be overridden in a derived class.list_testsβ Returns the list of test methods in this class and base classes.fail([MESSAGE])β Immediate fail the test.assert(ARG [, MESSAGE])β Checks if theARGexpression returns a true value.assert_null(ARG [, MESSAGE])/assert_not_null(ARG [, MESSAGE])β Checks ifARGis defined or not defined.assert_equals(ARG1, ARG2 [, MESSAGE])/assert_not_equals(ARG1, ARG2 [, MESSAGE])β Checks ifARG1andARG2are equals or not equals. IfARG1andARG2look like numbers, then they are compared with the==operator; otherwise, the stringeqoperator is used.assert_num_equals(ARG1, ARG2 [, MESSAGE])/assert_num_not_equals(ARG1, ARG2 [, MESSAGE])β Force numeric comparison.assert_str_equals(ARG1, ARG2 [, MESSAGE])/assert_str_not_equals(ARG1, ARG2 [, MESSAGE])β Force string comparison.assert(qr/PATTERN/, ARG [, MESSAGE]),assert_matches(qr/PATTERN/, ARG [, MESSAGE]),assert_does_not_match(qr/PATTERN/, ARG [, MESSAGE])β Checks ifARGmatches thePATTERregexp.assert_deep_equals(ARG1, ARG2 [, MESSAGE])/assert_deep_not_equals(ARG1, ARG2 [, MESSAGE])β Check if referenceARG1is a deep copy of referenceARG2or not. The references can be a deep structure. If they are different, the message will display the place where they start differing.
π Test::Unit::TestSuite
This is a base class for a test suite, which groups several test units.
empty_new([NAME])β Creates a fresh suite with no tests.new([CLASS | TEST])β Creates a test suite from a unit test name or class. 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 (seeTest::Unit::TestCase->list_test) from the test case into a new test suite.nameβ Contains the name of the current test suite.unitsβ Contains the list of test units.add_test([TEST_CLASSNAME | TEST_OBJECT])β Adds the test object to a suite.count_test_casesβ Returns the number of test cases in this suite.runβ Runs the test suite and outputs the results as a TAP report.
π¦ Test::Unit::TestRunner
This is the test runner which outputs a text report about a finished test suite.
new([$fh_out [, $fh_err]])β The constructor for the whole test framework. Its optional parameters are filehandles for standard output and error messages.fh_outβ Contains the filehandle for standard output.fh_errβ Contains the filehandle for error messages.suiteβ Contains the test suite object.print_headerβ Called before running the test suite.print_errorβ Called after an error was occurred on theset_uportear_downmethod.print_failureβ Called after a test unit is failed.print_passβ Called after a test unit is passed.print_footerβ Called after running the test suite.start(TEST_SUITE)β Starts the test suite.
π Test::Unit::Result
This object contains the results of a test suite.
newβ Creates a new object.messagesβ Contains the array of result messages. The single message is a hash which contains:testβ the test unit name,typeβ the type of message (PASS,ERROR,FAILURE),messageβ the text of message.
errorsβ Contains the number of collected errors.failuresβ Contains the number of collected failures.passesβ Contains the number of collected passes.add_error(TEST, MESSAGE)β Adds an error to the report.add_failure(TEST, MESSAGE)β Adds a failure to the report.add_pass(TEST, MESSAGE)β Adds a pass to the report.
π Test::Unit::HarnessUnit
This is the test runner which outputs in the same format that Test::Harness expects (Test Anything Protocol). It is derived from Test::Unit::TestRunner.
π Test::Unit::Debug
The empty class which is provided for compatibility with the original Test::Unit framework.
β Test::Unit::Lite::AllTests
The test suite which searches for test units in the t/tlib directory.
π₯ COMPATIBILITY π₯
Test::Unit::Lite should be compatible with the public API of Test::Unit. Test::Unit::Lite also has some known incompatibilities:
- The test methods are sorted alphabetically.
- It implements a new assertion method:
assert_deep_not_equals. - Does not support
ok,assert(CODEREF, @ARGS)andmulti_assert.
Test::Unit::Lite is compatible with Test::Assert assertion functions.
π EXAMPLES π
π t/tlib/SuccessTest.pm
This is the simple unit test module.
package SuccessTest;
use strict;
use warnings;
use base 'Test::Unit::TestCase';
sub test_success {
my $self = shift;
$self->assert(1);
}
1;
π§ t/all_tests.t
This is the test script for Test::Harness called with make test.
#!/usr/bin/perl
use strict;
use warnings;
use File::Spec;
use Cwd;
BEGIN {
unshift @INC, map { /(.*)/; $1 } split(/:/, $ENV{PERL5LIB}) if defined $ENV{PERL5LIB} and ${^TAINT};
my $cwd = ${^TAINT} ? do { local $_=getcwd; /(.*)/; $1 } : '.';
unshift @INC, File::Spec->catdir($cwd, 'inc');
unshift @INC, File::Spec->catdir($cwd, 'lib');
}
use Test::Unit::Lite;
local $SIG{__WARN__} = sub { require Carp; Carp::confess("Warning: $_[0]") };
Test::Unit::HarnessUnit->new->start('Test::Unit::Lite::AllTests');
π¦ t/test.pl
This is the optional script for calling the test suite directly.
#!/usr/bin/perl
use strict;
use warnings;
use File::Basename;
use File::Spec;
use Cwd;
BEGIN {
chdir dirname(__FILE__) or die "$!";
chdir '..' or die "$!";
unshift @INC, map { /(.*)/; $1 } split(/:/, $ENV{PERL5LIB}) if defined $ENV{PERL5LIB} and ${^TAINT};
my $cwd = ${^TAINT} ? do { local $_=getcwd; /(.*)/; $1 } : '.';
unshift @INC, File::Spec->catdir($cwd, 'inc');
unshift @INC, File::Spec->catdir($cwd, 'lib');
}
use Test::Unit::Lite;
local $SIG{__WARN__} = sub { require Carp; Carp::confess("Warning: $_[0]") };
all_tests;
This is the perl equivalent of the shell command line:
perl -Iinc -Ilib -MTest::Unit::Lite -w -e all_tests
π SEE ALSO π
Test::Unit, Test::Assert.
π§ͺ TESTS π§ͺ
Test::Unit::Lite was tested as a Test::Unit replacement for the following distributions: Test::C2FIT, XAO::Base, Exception::Base.
π BUGS π
If you find the bug or want to implement new features, please report it at https://github.com/dex4er/perl-Test-Unit-Lite/issues
The code repository is available at http://github.com/dex4er/perl-Test-Unit-Lite
π AUTHOR π
Piotr Roszatycki dexter@cpan.org
π LICENSE π
Copyright (c) 2007-2009, 2012 by Piotr Roszatycki <dexter@cpan.org>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See http://www.perl.com/perl/misc/Artistic.html
and thatβs the whole vibe, bestie β perl v5.42.0 β’ 2013-06-04 β’ Test::Unit::Lite(3pm) ππ«Ά
π¦ where this page comes from
- opensuse-leap 16.0: perl-Test-Unit-Lite 0.1202-bp160.1.4 Β· Artistic-1.0 or GPL-1.0+
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms