即使内存限制为 -1,phpdbg/phpunit 也会抛出错误

viv*_*vek 5 php phpunit phpdbg

我有一台 32GB 的机器,运行超过 2000 个测试用例,使用 phpdbg 进行代码覆盖。

phpdbg -qrr -d memory_limit=-1./vendor/phpunit/phpunit/phpunit --debug --verbose
Run Code Online (Sandbox Code Playgroud)

运行一段时间后,它抛出以下错误甚至memory_limit是-1

map() 失败:[12] 无法分配内存 [PHP 致命错误:内存不足(已分配 5830606848)(尝试分配 65536 字节)]

Ali*_*man 1

您可能会泄漏内存并且没有清理它。有些插件会报告每个测试使用了多少内存,而其他插件会尝试自动清理 - 尽管随着 PHPunit v6+ 的更新,有些插件可能需要注意使用命名空间测试用例类。

尝试释放内存的一个是“mybuilder/phpunit-accelerator”,但是如果您可以找到特别占用内存的测试类,您可以手动将teardown() 函数中使用的变量清空。

确保您只收集自己代码的覆盖率数据(src/,也许还有测试/)也将节省大量内存(和时间) - 但将“src/”目录列入白名单,不要尝试将其列入黑名单/排除“供应商/”。

  • createApplicaiton @ Illuminate\Foundation\Testing\TestCase 处内存泄漏。它为每个测试用例增加 2 MB。这似乎是 phpunit 的问题,没有可用的解决方案。 (2认同)