Codeception代码覆盖率极其缓慢

10

我正在使用Codeception(带有代码覆盖率)来检查我使用Yii2框架编写的应用程序的代码覆盖率。由于我的Mac上的标准php安装未启用xcode,我通过向php.ini添加zend_module行来激活它。代码覆盖似乎现在可以工作,但速度非常缓慢。是的,我知道激活xdebug和覆盖率生成需要一些时间,但我认为这不正常:即使是一个简单的单元测试,仅检查对象初始化也需要长达15分钟。

我认为这不是CPU或RAM问题,而是配置问题。

我使用以下命令开始代码覆盖:

codeception run unit --coverage-html

我发现的问题是:无论测试数据有多大,第一次测试总是很快。第二次测试要慢得多(不管是什么测试),第三次更慢。我该如何追踪问题?我想要找到问题所在。

再说一遍:我知道代码覆盖率会减慢测试速度,但是一个简单的测试需要15分钟就不正常了。

// 编辑:没有启用代码覆盖率时,运行时间约为15分钟的测试只需1秒钟。


一样的糟糕 :( 他们拿着可用的phpunit代码,然后自己包装了一下...嗯,我们可以称之为代码。 - whitediver
你好,我正在获取一个结果。 类:(0/0) 方法:(0/0) 行:(0/0)。 我正在使用相同的命令,我的测试用例可以正常工作,但没有显示代码覆盖率。我的代码有什么问题? - Anway Kulkarni
你确定不是xdebug的问题吗?也许你设置了断点或其他减慢进程的程序。尝试禁用xdebug或其他减慢进程的程序,然后再试一次。 - TheDevWay
能否调试该进程? - Gavindra Kalikapersaud
1个回答

2
您需要启用xdebug才能获取覆盖率报告(您已经做到了!),因此禁用它不会有任何帮助。
运行这些分析检查时存在巨大的开销,例如我的Laravel应用程序有大约300个测试和1000个断言。获取覆盖率报告需要大约5分钟的时间,但关闭xdebug并且没有覆盖率报告则只需15秒钟。
您可以通过配置php.ini来获得更多性能吗?也许检查一下您允许php消耗多少内存。我认为默认是128mb,允许一些更多的内存可能会防止内存/磁盘卡顿?
如果您的应用程序很复杂,可以在xdebug中启用分析功能,并在PHPStorm中分析结果,看看哪些因素导致速度变慢。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接