SimpleTest for PHP

SimpleTest 是又一个我通过Google发现的好东东,是可以用来实现PHP的Unit Test的工具,功能类似于Java的JUnit。


测试时只需要建一个包含被测函数、测试输入和测试结果判断的函数,SimpleTest 可以将测试结果输出成html或者XML的形式。


另外它还支持 Mock objects* 和 Web test 。


Sample Code:


<?php
require_once(‘simpletest/unit_tester.php’);    // SimpleTest库
require_once(‘simpletest/reporter.php’);        // SimpleTest输出Report的库
require_once(‘../classes/log.php’);            // 被测函数库


class TestOfLogging extends UnitTestCase {
    // 新建测试函数
    function testCreatingNewFile() {
        $log = new Log(‘/temp/test.log’);    // 新建被测对象
        $this->assertFalse(file_exists(‘/temp/test.log’));    // 判断测试输出的结果
    }
}
?>


注:什么是mock objects?
简单的说,就是一个仿造的对象,它和被模访的对象有着相同的接口。
举个例子,我们要测试Class A,Class A要调用Class B的函数,但如果Class B现在还没有实现,那么我们可以从Class B的接口抽象出一个接口interfaceB,再构建一个类Class MockB来实现这个接口,一般MockB的实现非常简单,它的存在只是为了方便测试Class A。
要注意的是我们要测试的是Class A,而不是Class MockB这个mock object。