2014-10-20 55 views
0

我有一个使用Laravel框架以PHP编写的应用程序。降低Laravel的单元测试内存使用率

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

我的问题是,这个测试套件走的是一条痛苦的长时间运行(约10分钟),并且现在也开始用尽我们的测试服务器上的内存。

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

我已经做了一些调查,它似乎是它的如此之慢,并使用如此之多的RAM的主要原因是因为它设置为每个测试提供一个全新的Laravel环境。

这是可以理解的,但我正在寻找方法来降低下来 - 无论是内存使用量或时间服用,或更好,但两者。

任何人都可以提出简化我的代码或我的测试,这将帮助这一点的方法吗?

谢谢。

回答

1

你所有的测试是否都有功能,或者其中一些是单元?如果你正在对你的类进行单元测试,你根本不需要初始化Laravel环境,只需要获得一个涉及类的实例并设置依赖关系。

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

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

所以,你可以扩展Laravel测试类,当你需要的Laravel服务,但如果你正在测试库,你可以使用普通PHPUnit测试。

+0

我想你说的是为了达到我想要的,我将需要重写一个公平的应用程序块。考虑到我已经完全覆盖了测试,这很难证明是正确的,所以我所要做的就是花时间让代码更复杂,以加快测试周期。我发现了一些其他的帮助有所帮助的技巧,所以我暂时会使用这些技巧。我会回头重构,但只有当我接下来需要在任何给定的代码中工作时。 – Simba 2014-10-21 12:46:27