编写测试套件
你可能已经注意到了,在阅读完前面的事例后,手动运行phpunit并指定测试类和PHP文件名会很快变得乏味。尤其是在处理有几十个甚至上百个类和文件的应用程序时,这种情况更加明显。PHPUnit 项目有一个内置的功能,可以用一条命令处理多个测试。这样一组测试被称为测试套件。
如何做...
1.最简单的是,你需要做的就是把所有的测试移到一个单独的文件夹里。
2. 你需要调整包含或需要外部文件的命令,以说明新的位置。所示的例子(SimpleTest
)是在前面的事例中开发的。
3. 然后你可以简单地以目录路径为参数运行phpunit
。PHPUnit 会自动运行该目录下的所有测试。在这个例子中,我们假设有一个测试子目录。
4. 你可以使用--bootstrap
选项来指定一个在运行测试之前执行的文件。这个选项的一个典型用途是启动自动加载。
5. 这里是实现自动加载的示例bootstrap.php
文件。
6. 另一种可能性是使用 XML 配置文件定义一个或多个测试集。下面是一个只运行Simple*测试的例子。
7. 下面是另一个基于目录运行测试的例子,也指定了一个引导文件。
如何运行...
确保所有的测试都已经定义好了,在前面的 "编写一个简单的测试 "中已经讨论过了,然后你可以创建一个测试文件夹,并将所有的Test.php
文件移动或复制到这个文件夹中。然后你可以创建一个测试文件夹,并将所有Test.php
文件移动或复制到这个文件夹中。然后你需要调整`require_once`语句中的路径,如步骤2所示。
你应该看到以下输出。
为了演示通过bootstrap
文件来使用自动加载,创建一个新的test_with_autoload
目录。在这个文件夹中,定义一个bootstrap.php
文件,代码如步骤5所示。在 tests_with_autoload
中创建两个目录。Demo
和Simple
。
从包含本章源代码的目录中,将该文件(在前面的第12步中讨论过)复制到test_with_autoload/Demo/Demo.php
中。在开头的<?php
标签后,添加这行。
接下来,复制SimpleTest.php
文件到 tests_with_autoload/Simple/ClassTest.php
。(注意文件名的变化!). 你需要将前几行修改为以下内容:
之后,创建一个 tests_with_autoload/phpunit.xml
文件,把所有的东西整合在一起。
最后,改到包含本章代码的目录。现在你可以运行一个单元测试,其中包含一个bootstrap文件,以及自动加载和命名空间,如下所示。
输出结果应如下所示:
更多...
关于编写PHPUnit测试套件的更多信息,请看这个文档页:https://phpunit.de/manual/current/en/phpunit-book.html#organizing-tests.xml-configuration。
最后更新于