用 @requires 来跳过测试
最后更新于:2022-04-01 03:45:23
# 用 @requires 来跳过测试
除了上述方法,还可以用 `@requires` 标注来表达测试用例的一些常见前提条件。
**Table 7.3. 可能的 @requires 用法**
| 类型 | 可能的值 | 范例 | 其他范例 |
|-----|-----|-----|-----|
| `PHP` | 任何 PHP 版本标识符 | @requires PHP 5.3.3 | @requires PHP 5.4-dev |
| `PHPUnit` | 任何 PHPUnit 版本标识符 | @requires PHPUnit 3.6.3 | @requires PHPUnit 4.6 |
| `OS` | 用来对 [PHP_OS](http://php.net/manual/en/reserved.constants.php#constant.php-os) 进行匹配的正则表达式 | @requires OS Linux | @requires OS WIN32\|WINNT |
| `function` | 任何对 [function_exists](http://php.net/function_exists) 而言有效的参数 | @requires function imap_open | @requires function ReflectionMethod::setAccessible |
| `extension` | 任何扩展的名称 | @requires extension mysqli | @requires extension curl |
**Example 7.3. 用 @requires 来跳过测试**
~~~
<?php
/**
* @requires extension mysqli
*/
class DatabaseTest extends PHPUnit_Framework_TestCase
{
/**
* @requires PHP 5.3
*/
public function testConnection()
{
// 测试要求有 mysqli 扩展,并且 PHP >= 5.3
}
// ... 所有其他要求有 mysqli 扩展的测试
}
?>
~~~
如果使用了某种在特定版本的 PHP 下无法编译的语法,请在此章节内查找 XML 配置信息中关于版本依赖的信息:[the section called “测试套件”](# "测试套件")