降低Laravel的单元测试内存使用率

时间:2014-10-20 10:53:36

标签: php performance unit-testing laravel-4 phpunit

我有一个使用Laravel框架用PHP编写的应用程序。

我有一个测试套件,包含大约200个phpUnit测试方法。

我遇到的问题是这个测试套件需要花费很长时间才能运行(约10分钟),现在我们的测试服务器上也开始耗尽内存。

我可以调整php.ini中的最大内存来解决后一个问题,但这不是重点:我不应该 - 我不想要为单个PHP进程分配500mb或gig。 (因为,你知道,服务器可能需要同时做其他事情)

我已经做了一些调查,看起来它的主要原因是速度太慢并且使用了这么多内存,因为它为每次测试都设置了一个全新的Laravel环境。

这是可以理解的,但我正在寻找减少它的方法 - 无论是内存使用还是花费的时间,或两者都更好。

有人可以建议简化我的代码或我的测试的方法吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

您的所有测试都是功能性的,还是其中一些是单元?如果您对类进​​行单元测试,则根本不需要初始化Laravel环境,只需获取所涉及的类的实例并设置依赖项。

检查"我是写作单元还是功能测试?"关于编写Laravel控制器测试的教程部分:

https://medium.com/laravel-4/laravel-4-controller-testing-48414f4782d0

因此,当您需要Laravel服务时,可以扩展Laravel测试类,但如果您正在测试库,则可以使用普通的PHPUnit测试。