【问题标题】:Lowering Laravel's unit test memory usage降低 Laravel 的单元测试内存使用量
【发布时间】:2014-12-15 07:57:06
【问题描述】:

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

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

我遇到的问题是,这个测试套件的运行时间非常长(大约 10 分钟),而且现在我们的测试服务器上的内存也开始不足。

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

我进行了一些调查,似乎它如此缓慢且使用如此多 RAM 的主要原因是因为它为每次测试设置了一个全新的 Laravel 环境。

这是可以理解的,但我正在寻找减少它的方法 - 无论是内存使用量还是所花费的时间,或者两者兼而有之。

任何人都可以提出简化我的代码或测试的方法吗?

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我猜你的意思是为了实现我想要的,我需要重写应用程序的相当一部分。鉴于我已经完全覆盖了测试,这很难证明是合理的,所以我要做的就是花时间使代码更复杂,以加快测试周期。我发现了一些其他有用的技巧,所以我会暂时使用这些技巧。我会回去并正确地重构,但前提是我接下来需要处理任何给定的代码。
    猜你喜欢
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 2018-12-17
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    相关资源
    最近更新 更多