我刚刚开始将PHP Unit与Zend Framework结合使用,并且我对memory_limit有问题。当前,内存限制设置为32M,并且在运行所有测试时出现致命错误:
允许使用的内存大小为33554432字节。
[当前,我有:7个文件,125个测试,332个断言。我只测试控制器。我使用@dataProvider进行1到5组数据的测试(起初我是从文件中读取它们的,我曾尝试将数据直接放入测试文件中,但仍会达到内存限制)
所以我的问题是,对于基于phpunit的测试,您通常的内存限制是多少?我应该在哪里改进内存测试?任何建议都会很棒。
谢谢,加百利
我的测试套件超过300个案例,内存限制为128M后,我遇到了类似的问题。帮助我的是在孤立的流程中运行测试用例。您可以从命令行执行此操作:
phpunit --process-isolation
或将其添加到您的phpunit.xml配置中:
<phpunit bootstrap="./application/bootstrap.php"
processIsolation="true">
另一个解决方案是在每次测试后关闭备份并恢复全局状态。默认情况下,PHPUnit会执行此操作,这会将我们的测试套件的内存使用量从1000 MB减少到90 MB ...(是的,我们有一个庞大的应用程序)
phpunit配置文件中有一个名为backupGlobals的设置。
https://phpunit.readthedocs.io/en/7.4/configuration.html
600个测试,?断言,80 000行代码,约1200个不带库的文件
我使用默认内存设置(128M)运行PHP 5.3.3,并且在Zend Framework上进行单元测试应用程序时从未遇到问题。
请谨慎执行phpunit --process-isolation
,因为它会在单独的PHP进程中运行每个测试,因此测试会慢很多。相反,您可以只在php.ini中增加memory_limit
对于旧的应用程序,每次测试后我都会遇到内存增加的问题,导致内存使用量超过1G。为了解决这个问题,我尝试了很多不同的方法。最有效的是: