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