运行 PHP 扩展测试

除了这四个文件外,ext_skel 脚本还创建了一个 tests 目录,里面有几个 *.phpt 文件。这些都是自动测试,可以通过运行 make test 命令一并执行:

$ make test
…
=====================================================================
TEST RESULT SUMMARY
---------------------------------------------------------------------
Exts skipped : 0
Exts tested : 26
---------------------------------------------------------------------
Number of tests : 3 3
Tests skipped : 0 ( 0.0%) --------
Tests warned : 0 ( 0.0%) ( 0.0%)
Tests failed : 0 ( 0.0%) ( 0.0%)
Tests passed : 3 (100.0%) (100.0%)
---------------------------------------------------------------------
Time taken : 1 seconds
=====================================================================

该命令将打印测试执行进度和结果摘要。一个好的做法是,用相应的测试覆盖大多数扩展逻辑,并始终在更改后运行测试。

让我们研究一下测试文件 tests/003.phpt

--TEST--
test_test2() Basic test
--SKIPIF--
<?php
if (!extension_loaded('test')) {
    echo 'skip';
}
?>
--FILE--
<?php
var_dump(test_test2());
var_dump(test_test2('PHP'));
?>
--EXPECT--
string(11) "Hello World"
string(9) "Hello PHP"

该文件由几个部分组成:

  • --TEST-- 定义测试名称。

  • --SKIPIF--(可选)包含用于检查跳过条件的 PHP 代码。如果打印出以 "skip" 开头的字符串,则整个测试将被跳过。如果没有加载扩展名 test,我们的部分就会打印 "skip",因为检查未加载的函数没有意义(测试会失败)。

  • --FILE-- 部分包含主测试 PHP 代码。

  • --EXPECT-- 部分包含测试脚本的预期输出。