自升级到Laravel 5.6后,PHPUnit停滞或耗尽内存

时间:2018-02-19 19:45:58

标签: php laravel phpunit homestead laravel-5.6

我有一个有效的测试套件,但是我的本地环境有两件事情发生了变化。 1)我已将Homestead升级到版本7和2)我已将我的应用程序升级到Laravel 5.6。

现在我遇到了PHPUnit耗尽内存分配的问题,除非我将ini_set('memory_limit', '1024M');添加到createApplication方法的开头。然后我的测试套件进一步发展,但最终完全失速。

奇怪的是,如果我运行测试,套件会在隔离的情况下停止运行。事实上,如果我只测试整个文件,可能包含10个测试,那么测试全部通过。它只会在试图一次性测试整个套件时停止......

就好像在测试之间没有清理它只是填满内存和冻结。

但我使用默认的TestCase tearDown方法:

/**
 * Clean up the testing environment before the next test.
 *
 * @return void
 */
protected function tearDown()
{
    if ($this->app) {
        foreach ($this->beforeApplicationDestroyedCallbacks as $callback) {
            call_user_func($callback);
        }

        $this->app->flush();

        $this->app = null;
    }

    $this->setUpHasRun = false;

    if (property_exists($this, 'serverVariables')) {
        $this->serverVariables = [];
    }

    if (property_exists($this, 'defaultHeaders')) {
        $this->defaultHeaders = [];
    }

    if (class_exists('Mockery')) {
        if ($container = Mockery::getContainer()) {
            $this->addToAssertionCount($container->mockery_getExpectationCount());
        }

        Mockery::close();
    }

    if (class_exists(Carbon::class)) {
        Carbon::setTestNow();
    }

    $this->afterApplicationCreatedCallbacks = [];
    $this->beforeApplicationDestroyedCallbacks = [];

    Artisan::forgetBootstrappers();
}

根据我的理解,重置测试之间的所有内容。

我在内存中使用sqlite作为我的测试数据库。

升级后有其他人遇到问题吗?

更新

我最终走到了最底层。这是PHP 7.2的一个问题。降级到7.1并且所有测试都没有通过默认内存限制。

0 个答案:

没有答案