牛骨文教育服务平台(让学习变的简单)

实现 PHPUnit_Framework_TestListener

Example 14.3, “简单的测试监听器”展示了 PHPUnit_Framework_TestListener 接口的一个简单实现。

Example 14.3. 简单的测试监听器

<?php
class SimpleTestListener implements PHPUnit_Framework_TestListener
{
    public function addError(PHPUnit_Framework_Test $test, Exception $e, $time)
    {
        printf("Error while running test "%s".
", $test->getName());
    }

    public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time)
    {
        printf("Test "%s" failed.
", $test->getName());
    }

    public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time)
    {
        printf("Test "%s" is incomplete.
", $test->getName());
    }

    public function addRiskyTest(PHPUnit_Framework_Test $test, Exception $e, $time)
    {
        printf("Test "%s" is deemed risky.
", $test->getName());
    }

    public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time)
    {
        printf("Test "%s" has been skipped.
", $test->getName());
    }

    public function startTest(PHPUnit_Framework_Test $test)
    {
        printf("Test "%s" started.
", $test->getName());
    }

    public function endTest(PHPUnit_Framework_Test $test, $time)
    {
        printf("Test "%s" ended.
", $test->getName());
    }

    public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
    {
        printf("TestSuite "%s" started.
", $suite->getName());
    }

    public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
    {
        printf("TestSuite "%s" ended.
", $suite->getName());
    }
}
?>

Example 14.4, “使用测试监听器基类”展示了如何从抽象类 PHPUnit_Framework_BaseTestListener 派生子类,这个抽象类为所有接口方法提供了空白实现,这样你就只需要指定那些在你的使用情境下有意义的接口方法。

Example 14.4. 使用测试监听器基类

<?php
class ShortTestListener extends PHPUnit_Framework_BaseTestListener
{
    public function endTest(PHPUnit_Framework_Test $test, $time)
    {
        printf("Test "%s" ended.
", $test->getName());
    }
}
?>

the section called “测试监听器”中可以看到如何配置 PHPUnit 来将测试监听器附加到测试执行过程上。