【问题标题】:How can i improve Codeception Code Coverage speed如何提高 Codeception 代码覆盖速度
【发布时间】:2019-03-25 01:19:08
【问题描述】:

目前我们已经使用 codeception 为我们的 php laravel 5.5 应用程序编写了一些单元测试。只是为了获得更多信息,我们的 laravel 代码库有大约 200k LOC。对于正常的单元测试运行,我们注意到它非常快,我们可以在 1 小时内完成 200 多个测试。

但主要问题是,当我们在默认使用 xdebug 的 codeception 中启用代码覆盖时,我们注意到执行时间急剧增加。

现在已经花了 1 周时间,但整个代码覆盖执行还没有完成。

我不确定这是来自 codeception 还是 xdebug 本身的问题,但如果有人有在庞大的代码库上运行 php codecoverage 的经验,如果你能分享你是如何实现它的,那就太好了。如果有人可以建议任何其他工具来研究,我也将不胜感激。目前我们正在考虑切换到 phpunit,但仍对其他工具开放探索。

【问题讨论】:

    标签: php unit-testing code-coverage laravel-5.5 codeception


    【解决方案1】:

    用 PHPUnit 替换 Codeception 需要做很多工作却收效甚微,因为 Codeception 在后台使用 PHPUnit 及其 PHP-Code-Coverage 库。

    有一个新的代码覆盖扩展,称为pcov,据说它比 xdebug 快得多。 https://github.com/krakjoe/pcov/blob/develop/INSTALL.md

    我没有尝试使用它,但请注意它需要 PHPUnit 8,它仅适用于 PHP 7.2 或更高版本。

    【讨论】:

    • 这是否意味着在 php 上目前没有已知的代码覆盖工具可以在庞大的代码库上运行?我们的另一个想法是将单体应用程序分解为微服务,但这需要对整个应用程序进行重大重写。还是谢谢你的回复
    • 您可以在您喜欢的任何大小的代码库上使用 pcov ...您也可以在 8 之前的 PHPUnit 版本(测试到 6.5)上使用 pcov,其中包含一些骇客...骇客包含在 @987654323 @ ...我的建议(我写了 pcov)是尽快更新到 PHPUnit 8 ...
    【解决方案2】:

    最近我看到通过用 phpdbg 替换 xdebug 来加快代码覆盖率 - 我无法给出确切的数字,因为代码库在其测试运行中具有广泛的功能测试(并且加速仅用于单元测试),但是2 小时以上的测试和覆盖运行已减少到大约 50 分钟。

    请注意,xdebug 和 phpdbg 的代码覆盖率可能不同(看起来 xdebug 更好地处理 opcache 优化)。

    编辑:

    自从用 phpdbg 替换 xdebug 后,我看到通过用 pcov 替换 phpdbg 进一步提高了速度。

    【讨论】:

      猜你喜欢
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-01
      相关资源
      最近更新 更多