RefreshDatabase的运行速度极慢

时间:2018-12-13 21:34:39

标签: laravel-5 phpunit

我正在使用Laravel v5.6.26,PHPUnit 6.5.8和PHP 7.2.9。

这是我的完整测试班:

class ExampleTest extends TestCase
{

    use RefreshDatabase;

    /** @test */
    public function basicTest()
    {
        $this->assertTrue(true);
        $this->assertFalse(false);
    }
}

我从宅基地打电话给phpunit

如果没有use RefreshDatabase,则需要513毫秒。使用use RefreshDatabase,需要17.29 。我目前有72张桌子。

enter image description here

我只想测试与一个表关联的一个模型。似乎刷新空的72表需要花费很多时间。我试图删除除所需表以外的所有表,但是use RefreshDatabase将始终迁移所有其他表。

如何加快速度?

我认为这里不是硬件问题。那就是我的电脑: Ram 32 GB,Intel®Core™i7-7700K CPU @ 4.20GHz×8,GeForce GTX 1070 / PCIe / SSE2,我正在运行64位的Ubuntu 18.04.1 LTS。

1 个答案:

答案 0 :(得分:2)

除非您使用SQLite,否则为每个测试迁移数据库确实非常缓慢。

您可以做的是使用DatabaseTransactions特性,它在测试开始时启动一个事务,并在测试结束时回滚它。

您可以在docs或本blog中阅读有关此内容的更多信息。