PHPUnit)大桥
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.2,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
PHPUnit)大桥
PHPUnit)大桥提供了实用程序来报告遗留测试和使用废弃的代码和一个辅助时间敏感测试。
它有以下特点:
- 力测试使用一致的语言环境(
C
); - Auto-register
class_exists
加载教义注释(使用时); - 它显示整个弃用功能列表应用程序中使用;
- 弃用按需显示堆栈跟踪;
- 提供了一个
ClockMock
和DnsMock
助手类时间或网络敏感测试。 - 提供了一个修改版的PHPUnit)不嵌入
ob娱乐下载symfony / yaml
也不预言
防止冲突与这些依赖关系。
安装
您可以安装组件在两个不同的方面:
- 安装它通过作曲家(
ob娱乐下载symfony / phpunit-bridge
在Packagist);作为一个dev
依赖; - 使用官方的Git存储库(https://github.com/ob娱乐下载symfony/phpunit-bridge)。
然后,需要供应商/ autoload.php
文件,使作曲家提供的半自动的机制。否则,您的应用程序无法找到这个Symfony组件的类。ob娱乐下载
如果你计划PHPUnit)大桥和使用常规PHPUnit)脚本(不是Symfony提供的修改后的PHPUnit)脚本),你必须注册一个新的ob娱乐下载测试监听器被称为ob娱乐下载SymfonyTestsListener
:
1 2 3 4 5 6 7 8 9 10 11
< !——http://phpunit.de/manual/6.0/en/appendixes.configuration.html——><phpunit)xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: noNamespaceSchemaLocation=“http://schema.phpunit.de/6.0/phpunit.xsd”>< !——……- - ><听众><侦听器类=“ob娱乐下载Symfony \ \ PhpUnit) \ SymfonyTestsListener桥”/ >< /听众>< /phpunit)>
使用
一旦安装组件,simple-phpunit
在创建脚本供应商/
目录来运行测试。这个脚本包原PHPUnit)二进制提供更多的功能:
1 2
美元cd我的项目/美元/供应商/ bin / simple-phpunit
运行PHPUnit)测试后,你会得到一个报告类似于这一个:
摘要包括:
- Unsilenced
- 没有推荐的报告被触发的警告注意事项@-silencing运营商。
- 遗产
- 弃用通知表示明确测试一些遗留的特性。
- 剩余的/其他
- 弃用通知所有其他(non-legacy)通知,按消息分组,测试类和方法。
请注意
如果你不想使用simple-phpunit
脚本,注册后PHPUnit)事件监听器PHPUnit)配置文件中得到相同的报告不支持(这是由一个PHP错误处理程序被称为DeprecationErrorHandler):
1 2 3 4 5
< !——phpunit.xml。区域- - >< !——……- - ><听众><侦听器类=“ob娱乐下载Symfony \ \ PhpUnit) \ SymfonyTestsListener桥”/ >< /听众>
触发的通知
弃用通知可以通过使用触发:
1
@trigger_error (“你的弃用信息”,E_USER_DEPRECATED);
没有@-silencing运营商从弃用通知,用户需要选择退出。沉默的违约互换这种行为时,允许用户选择他们已经准备好应付(通过添加一个自定义错误处理程序提供的桥)。不沉默时,通知将会出现Unsilenced弃用的报告。
马克测试遗留
有四个方法可以测试标记为遗产:
- (推荐)添加
@group遗留
注释的类或方法; - 使其类名开始
遗产
前缀; - 使其方法名称开始
testLegacy * ()
而不是测试* ()
; - 使其数据提供商
provideLegacy * ()
或getLegacy * ()
。
配置
以防你需要检查一个特定的堆栈跟踪弃用触发你的单元测试,您可以设置ob娱乐下载SYMFONY_DEPRECATIONS_HELPER
环境变量正则表达式匹配这个弃用的信息,附上/
。例如,使用:
1 2 3 4 5 6 7 8 9 10 11 12
< !——http://phpunit.de/manual/6.0/en/appendixes.configuration.html——><phpunit)xmlns: xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi: noNamespaceSchemaLocation=“http://schema.phpunit.de/6.0/phpunit.xsd”>< !——……- - ><php><服务器的名字=“KERNEL_DIR”价值=“应用程序/”/ ><env的名字=“ob娱乐下载SYMFONY_DEPRECATIONS_HELPER”价值=“foobar /”/ >< /php>< /phpunit)>
PHPUnit)测试套件将停止一次弃用通知触发消息包含了谁的“foobar”
字符串。
使测试失败
默认情况下,任何non-legacy-tagged或任何非“@-silenced”_弃用通知将使测试失败。另外,设置ob娱乐下载SYMFONY_DEPRECATIONS_HELPER
一个任意值(例:320年
)将使测试失败只有达到更高数量的通知(0
是默认值)。你也可以设置值“弱”
这将使桥忽略任何的通知。这是有用的项目,必须使用弃用接口原因向后兼容性。
禁用弃用的助手
3.1
禁用弃用助手的能力是在3.1中引入的
这个组件的版本。
设置ob娱乐下载SYMFONY_DEPRECATIONS_HELPER
环境变量来禁用
完全禁用弃用的助手。这是有用的利用该组件提供的其他功能没有得到错误或与此相关的信息。
写断言的用法
当添加不支持你的代码,你可能喜欢编写测试,验证他们根据需要触发。为此,提供的桥梁@expectedDeprecation
注释,您可以使用在你的测试方法。它需要你通过预期的消息,在相同的格式PHPUnit)的assertStringMatchesFormat ()方法。如果你期望不止一个弃用信息对于一个给定的测试方法,您可以使用注释几次(顺序问题):
1 2 3 4 5 6 7 8 9 10
/ * * *@group遗留*@expectedDeprecation这种“% s”方法是弃用。*@expectedDeprecation“% s”方法的第二个参数是弃用。* /公共函数testDeprecatedCode(){@trigger_error (不建议使用这个“Foo”方法。,E_USER_DEPRECATED);@trigger_error (”“酒吧”方法的第二个参数是弃用。,E_USER_DEPRECATED);}
对时间敏感的测试
用例
如果你有这种与时间相关的测试:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
使用PHPUnit)\框架\TestCase;使用ob娱乐下载\组件\秒表\秒表;类MyTest扩展TestCase{公共函数testSomething(){美元秒表=新秒表();美元秒表- >开始(“event_name”);睡眠(10);美元持续时间=美元秒表- >停止(“event_name”)- >getDuration ();美元这- >assertequal (10,美元持续时间);}}
你使用了ob娱乐下载Symfony秒表组件计算过程的持续时间,这10秒。然而,根据服务器的负载或在本地机器上运行的进程,美元的持续时间
例如可以“10.000023”而不是“10”。
这种测试被称为瞬态测试:他们没有根据伪随机和外部环境。他们经常使用公共持续集成服务时带来麻烦特拉维斯CI。
时钟嘲笑
的ClockMock这座桥提供的类允许您模拟PHP的内置时间函数时间()
,()
,睡眠()
和usleep ()
。
使用ClockMock
在您的测试类,添加@group时效性
注释的类或方法。这个注释只适用在执行PHPUnit)时使用供应商/ bin / simple-phpunit
脚本或当注册侦听器在PHPUnit)配置如下:
1 2 3 4 5
< !——phpunit.xml。区域- - >< !——……- - ><听众><侦听器类=“\ob娱乐下载 Symfony \ \ PhpUnit) \ SymfonyTestsListener桥”/ >< /听众>
请注意
如果你不想使用@group时效性
注释,您可以注册ClockMock
类手动通过调用ClockMock:注册(__CLASS__进行)
和ClockMock: withClockMock(真正的)
在测试前,ClockMock:: withClockMock(假)
在测试之后。
因此,以下是保证工作,不再是一个瞬态测试:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
使用PHPUnit)\框架\TestCase;使用ob娱乐下载\组件\秒表\秒表;/ * * *@group对时间敏感的* /类MyTest扩展TestCase{公共函数testSomething(){美元秒表=新秒表();美元秒表- >开始();睡眠(10);美元持续时间=美元秒表- >停止();美元这- >assertequal (10,美元持续时间);}}
这就是一切!
提示
使用一个额外的好处ClockMock
类是时间的流逝。使用PHP的睡眠(10)
会使你的实际测试等待10秒(或多或少)。相比之下,ClockMock
类进步的内部时钟的秒数没有实际等待时间,因此您的测试将执行10秒更快。
DNS-sensitive测试
3.1
介绍了DNS相关功能的模拟的3.1版有限公司