运行测试套件
现在,我们对我们正在进行的测试有了基本的了解,让我们运行测试套件。在运行测试之前,请确保已成功从源代码构建了 php(请参阅 构建 PHP),并且在 sapi/cli/php
中有一个可执行文件。
运行测试套件有两种方法。
直接使用 run-tests.php 运行测试
您可以使用 run-tests.php 直接运行测试套件。至少您需要指定要测试的 php 可执行文件,您可以使用 -p
标志执行此操作。请注意,为了正确运行所有测试,这应该是 PHP 可执行文件的绝对路径。
~/php-src> sapi/cli/php run-tests.php -p `pwd`/sapi/cli/php
您可以使用快捷标志来告诉 run-tests 针对当前调用的 PHP 可执行文件进行测试,即使用 -P
标志。
~/php-src> sapi/cli/php run-tests.php -P
如果您不想每次都设置 -p
或 -P
标志,您可以使用 TEST_PHP_EXECUTABLE
环境变量指定 php 可执行文件,该变量可以在 Linux 机器上使用 export
进行设置。
~/php-src> export TEST_PHP_EXECUTABLE=sapi/cli/php
~/php-src> sapi/cli/php run-tests.php
在 Windows 系统中,可以使用 set
设置环境变量。
C:\php-src> set TEST_PHP_EXECUTABLE=sapi/cli/php
C:\php-src> sapi/cli/php run-tests.php
默认情况下,run-tests.php
会开始运行测试套件中的所有 15000 多个测试,这将耗时很长时间。你可以指定要运行的目标测试文件夹,甚至是单个测试。下面的示例将运行与 PHP 7 的 CSPRNG 相关的所有测试。
~/php-src> sapi/cli/php run-tests.php -P ext/standard/tests/random
您还可以指定运行多个目标文件夹或文件。
~/php-src> sapi/cli/php run-tests.php -P Zend/ ext/reflection/ ext/standard/tests/array/
如果运行了完整的测试套件,但测试失败,脚本会询问您是否要向 PHP QA 团队发送报告。这有时会很烦人。可以通过设置 -q
标志或设置环境变量 NO_INTERACTION=1
来抑制这个问题。
通过 Makefile 运行测试(推荐)
运行测试套件的推荐方法是通过 Makefile
中定义的 test
目标。test
目标会为你指定 PHP 可执行文件(你编译的那个)、设置一些默认 INI 设置并为你指定最佳的运行测试标志。您不必担心设置环境变量或设置其他标志,因此命令非常简单。
~/php-src> make test
与之前一样,run-tests.php
将开始运行整个测试套件。要指定要执行的文件夹或单个测试,您可以传递一个 TESTS
变量。以下示例将测试 PHP 是否可以正确处理二进制文字。
~/php-src> make test TESTS=Zend/tests/binary.phpt
您可以在 TESTS
变量中指定多个要运行的目标文件夹或文件,方法是在每个路径之间用空格隔开。
~/php-src> make test TESTS="Zend/ ext/reflection/ ext/standard/tests/array/"