我有一台 32GB 的机器,运行 2000 多个测试用例,使用 phpdbg 进行代码覆盖。
phpdbg -qrr -d memory_limit=-1./vendor/phpunit/phpunit/phpunit --debug --verbose
运行一段时间后,即使memory_limit
是-1也会抛出以下错误
map() 失败:[12] 无法分配内存 [PHP 致命错误:内存不足(已分配 5830606848)(试图分配 65536 字节)]
您可能会泄漏内存并且没有清理它。有些插件会报告每个测试使用了多少内存,还有一些插件会尝试自动清理——尽管随着 PHPunit v6+ 的更新,有些插件可能需要注意使用命名空间测试用例类。
尝试释放内存的是“mybuilder/phpunit-accelerator”,但如果您能找到特别占用大量内存的测试类,您可以手动取消在 teardown() 函数中使用的变量。
确保您只为自己的代码(src/,也许还有测试/)收集覆盖率数据也将节省大量内存(和时间) - 但将“src/”目录列入白名单,不要尝试将其列入黑名单/排除“供应商/”。