资讯专栏INFORMATION COLUMN

PHPUnit 加速技巧分享

weizx / 768人阅读

摘要:接下来我们将会介绍一些可以快速实现的小技巧,让你的代码测试变得更快。该示例测试套件有意地模拟更广泛的测试集合,并突出改进的可行性。真实情况下,效率的提升可能有所差异。我认为相比通过提升一点速度带来的好处,保持生产环境一致更重要。

具备高效的测试一如编写高效的应用一样重要。作为开发者来说,迅速得知你刚编写的代码是否能够正常运行,能够让开发效率大大提升。接下来我们将会介绍一些可以快速实现的小技巧,让你的代码测试变得更快。

该示例测试套件有意地模拟更广泛的测试集合,并突出改进的可行性。真实情况下,效率的提升可能有所差异。

ParaTest

这个包 是一个用来运行你的测试套件的 PHPUnit 扩展。 和 PHPUnit 不一样的是它可以利用你的多核 CPU 来并行的运行测试用例。

你可以通过 composer 来将它作为一个开发依赖安装以后开始使用 ParaTest

composer require --dev brianium/paratest

现在我们就可以像调用 PHPUnit 一样来调用 ParaTest 了。它会自动的根据你机器 CPU 核心数来判断要启动多少个进程。

说明:尽管这样看上去很容易,你应该考虑生产环境数据库一致性问题。如果你在生产环境使用了 MySQL 数据库,你应该警惕引入不同数据库所带来的测试上的不同,比如 SQLite。我在这篇文章 my feature test suite setup 里描述了很多细节上的不同点。我认为相比通过提升一点速度带来的好处,保持生产环境一致更重要。

禁用 Xdebug

如果你平时用不到 Xdebug 的话,可以禁用掉它,因为它会降低 PHP 执行速度,导致测试用例运行缓慢。如果你日常使用它来调试的话,为了执行测试而禁用它可能不是一个好的选择 —— 但你始终要知道这一点当你关注测试用例执行速度时。

你可以在下面这个测试用例看到,一旦我们禁用了 Xdebug,执行速度将会有极大的提高。下面是这个测试用例在 Xdebug 启用时的执行情况:

以及同样的测试用例在 Xdebug 禁用时的执行情况:

修复测试速度过慢

当然我们最希望看到的段落是是:修复测试速度过慢!如果您正在努力确定哪些测试导致测试单元变慢时,您可能需要查看 PHPUnit Report 。它是一个开源工具,允许您通过生成如下所示的云可视化您的测试单元的性能,其中较大的气泡代表慢速测试。这将使您能够在单元中找到最慢的测试并逐步提高其性能。

转自 PHP / Laravel 开发者社区 https://laravel-china.org/top...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29998.html

相关文章

  • PHP / Laravel 月刊 #23

    摘要:大刀阔斧的改造在学习了两遍之后,基于教程开发的校园二手书交易平台熊能本周阅读清单纸牌屋弗兰克知道的太晚了实现微信红包拆分算法聊聊最近求职发生的故事無铭更多现代化知识,请前往知识社区 showImg(https://segmentfault.com/img/bV8ctF?w=1650&h=1100); 最新资讯 Laravel 5.6 中文文档翻译完成,译者 60 人,耗时 10 天...

    klinson 评论0 收藏0
  • 写 Laravel 测试代码 (六)

    摘要:写测试代码时,有时候需要利用来生成测试代码覆盖率报告,方便调试和检查。测试报告存放在,是文件,可在浏览器中打开。当然,要生成测试报告,测试运行速度就会大大降低。,有了测试报告可作为调试和检查代码的补充手段,能从整体层面查看代码的质量。 写测试代码时,有时候需要利用phpunit来生成测试代码覆盖率报告,方便调试和检查。本文主要聊聊如何在PHPStorm中配置phpunit。 假设php...

    VincentFF 评论0 收藏0
  • 几个CSS技巧分享

    摘要:创建剪切动画对于剪切动画,使用代替,避免重排导致性能过低。其中属于万金油,大多数场景可以直接用它,但还是有些特殊的场景不能用子元素需要文字截断,为了兼容的浏览器,必须使用其他方式一般是子元素需要多行布局,的不支持,不能多行布局 创建剪切动画 对于剪切动画,使用clip-path代替width/height,避免DOM重排导致性能过低。 .animate { width: 200px...

    itvincent 评论0 收藏0
  • Laravel学习笔记之Core Concepts in Guzzle Package——Strea

    摘要:使用了来表示该,该接口也是对的抽象,暴露了一些常用方法判断是否满足要求的方法的读写相关操作获取元数据方法操作指针相关方法等等。本篇主要学习下相关使用。后续还会分享相关使用,到时见。 说明:本文主要学习guzzlehttp/guzzle package的使用,该package提供了一套发送HTTP请求API,就像phpunit package, mockery package, symf...

    singerye 评论0 收藏0
  • 途牛原创|大话权限中心的PHP架构之道

    摘要:权限中心的依赖声明声明依赖关系检查代码规范声明开发依赖命名空间检查代码规范,执行单元测试。单元测试持续交付一切都如此的完美,没有测试,又如何可以证明这件事情的完美,又如何可以保障交付的质量。 序 权限管理是无线运营系统中的核心模块,通过访问控制策略的配置,来约定人与资源的访问关系。 本文着重讲解如何通过PHP来构建一个灵活、通用、安全的权限管理系统。 关于权限 首先我们来聊聊权限。 权...

    miracledan 评论0 收藏0

发表评论

0条评论

weizx

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<