# phpman > perldoc > Test::Unit::Assertion

## NAME
    [Test::Unit::Assertion](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3AAssertion/markdown) - The abstract base class for assertions

## NAME
    Any assertion class that expects to plug into [Test::Unit::Assert](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3AAssert/markdown) needs to implement this
    interface.

### Required methods
    new Creates a new assertion object. Takes whatever arguments you desire. Isn't strictly
        necessary for the framework to work with this class but is generally considered a good idea.

    do_assertion
        This is the important one. If [Test::Unit::Assert::assert](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3AAssert%3A%3Aassert/markdown) is called with an object as its
        first argument then it does:

            $_[0]->do_assertion(@_[1 .. $#_]) ||
                $self->fail("Assertion failed");

        This means that "do_assertion" should return true if the assertion succeeds and false if it
        doesn't. Or, you can fail by throwing a [Test::Unit::Failure](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3AFailure/markdown) object, which will get caught
        further up the stack and used to produce a sensible error report. Generally it's good
        practice for do_assertion to die with a meaningful error on assertion failure rather than
        just returning false.

## AUTHOR
    Copyright (c) 2001 Piers Cawley <<pdcawley@iterative-software.com>>.

    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::Assert](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3AAssert/markdown)

    *   [Test::Unit::CodeRef](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3ACodeRef/markdown)

    *   [Test::Unit::Regexp](https://www.chedong.com/phpMan.php/perldoc/Test%3A%3AUnit%3A%3ARegexp/markdown)

