5. 组织测试

    PHPUnit 支持好几种不同的方式来组织测试以及将它们编排组合成测试套件。本章介绍了最常用的方法。

    编排测试套件的各种方式中,最简单的大概就是把所有测试用例源文件放在一个测试目录中。通过对测试目录进行递归遍历,PHPUnit 能自动发现并运行测试。

    现在来看看 这个库的测试套件。在这个项目的目录结构中,可以看到 目录下的测试用例类镜像了 src 目录下被测系统(SUT,System Under Test)的包(package)与类(class)的结构:

    要运行这个库的全部测试,将 PHPUnit 命令行测试执行器指向测试目录:

    1. $ phpunit --bootstrap src/autoload.php tests
    2. PHPUnit latest.0 by Sebastian Bergmann and contributors.
    3. .................................
    4. Time: 636 ms, Memory: 3.50Mb
    5. OK (33 tests, 52 assertions)

    当 PHPUnit 命令行测试执行器指向一个目录时,它会在目录下查找 *Test.php 文件。

    如果只想运行在 CurrencyTest 文件中的 测试用例类中声明的测试,可以使用如下命令:

    如果想要对运行哪些测试有更细粒度的控制,可以使用 --filter 选项:

    1. $ phpunit --bootstrap src/autoload.php --filter testObjectCanBeConstructedForValidConstructorArgument tests
    2. PHPUnit latest.0 by Sebastian Bergmann and contributors.
    3. ..
    4. Time: 167 ms, Memory: 3.00Mb

    用 XML 配置来编排测试套件

    PHPUnit的 XML 配置文件(XML 配置文件)也可以用于编排测试套件。 展示了一个最小化的 phpunit.xml 例子,它将在递归遍历 tests 时添加所有在 文件中找到的 *Test 类。

    示例 5.1 用 XML 配置来编排测试套件

    要运行测试套件,用 --testsuite 选项:

    1. $ phpunit --bootstrap src/autoload.php --testsuite money
    2. PHPUnit latest.0 by Sebastian Bergmann and contributors.
    3. ..
    4. Time: 167 ms, Memory: 3.00Mb
    5. OK (2 test, 2 assertions)

    如果 phpunit.xml 或 (按此顺序)存在于当前工作目录并且使用 --configuration,将自动从此文件中读取配置。

    示例 5.2 用 XML 配置来编排测试套件