当前,我们已经使用代码接收为php laravel 5.5应用程序编写了一些单元测试。仅仅为了获得更多信息,我们的laravel代码库具有大约200k LOC。对于正常的单元测试运行,我们注意到它的确非常快,可以在1小时内完成200多个测试。
但是主要问题是,当我们在默认情况下使用xdebug的代码接收中启用代码覆盖时,我们注意到执行时间急剧增加。
现在已经花费了1周的时间,但是整个代码覆盖率执行尚未完成。
我不确定这是代码接收还是xdebug本身带来的问题,但是如果有人有在庞大的代码库上运行php codecoverage的经验,那么可以分享实现的方法会很好。如果有人可以建议其他任何工具,也将不胜感激。目前,我们正在考虑切换到phpunit,但仍欢迎其他工具进行探索。
答案 0 :(得分:2)
用PHPUnit替换Codeception将花费很多功夫,因为Codeception在后台使用了PHPUnit及其PHP-Code-Coverage库。
有一个名为pcov的新代码覆盖范围扩展,它据说比xdebug快得多。 https://github.com/krakjoe/pcov/blob/develop/INSTALL.md
我还没有尝试使用它,但是请注意,它需要PHPUnit 8,该功能仅在PHP 7.2或更高版本上可用。
答案 1 :(得分:0)
最近,我看到用phpdbg替换xdebug加快了代码覆盖范围-我无法给出确切的数字,因为代码库在其测试运行中具有广泛的功能测试(并且提速仅用于单元测试),但是2小时以上的测试和覆盖时间已减少到50分钟左右。
请注意,xdebug和phpdbg的代码覆盖范围可能不同(看起来xdebug可以更好地处理opcache优化)。