在计算机科学领域,bridge pattern意味着“将一个抽象层从它的实现层解藕,以便此二者完全独立”。桥使用了封装与聚合,能够使用继承来划分责任给不同的类。
Symfony定义了几个桥,来抽象第三方的类库,比如Doctrine、Monolog、Swiftmailer和Twig。在Symfony 2.7中我们添加了一个新桥,用于PHPUNIT。这个首版本的桥提供了如下功能:
它禁止了PHP在测试时的垃圾收集器以避免segmentation faults;
自动注册所需的类以便加载Doctrine annotations;
在测试包的最末报告deprecation提示的汇总。
最后一个功能对那些正在准备把程序转移到Symfony3的开发者来说非常有用。首先,安装这个全新的PHPUnit桥到程序中,执行以下命令:
1 | $ composer require --dev "symfony/phpunit-bridge":2.7.x@beta |
接下来,执行测试包(test suite),你就能看到一个“仍然在你程序中使用的”被弱化的Symfony功能的报告:
默认时,deprecation提示会令测试失败。这种行为可以被控制,使用SYMFONY_DEPRECATION_HELPER
环境变量(默认值=strict
)。改变那个变量的值为weak
,就可以令桥忽略deprecation提示。这对于那些因为“向下兼容”原因而必须使用deprecated接口的项目来说是很有用的。
另外,你可以安全地标记一个测试为legacy(遗产),使用下列任何一种方法都可以:
给类名标记一个
Legacy
前缀;给方法标记一个
testlegacy
前缀令其data provider的命名以
providerLegacy
或getLegacy
开头;添加
@group
遗产注释(legacy annotation)到这个测试的类或方法。