RefreshDatabase очень медленно - PullRequest
       1

RefreshDatabase очень медленно

0 голосов
/ 14 декабря 2018

Я использую 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 ГБ, процессор Intel® Core ™ i7-7700K @ 4,20 ГГц × 8, GeForce GTX 1070 / PCIe / SSE2, я использую Ubuntu 18.04.1 LTS 64 Bit.

1 Ответ

0 голосов
/ 14 декабря 2018

Если вы не используете SQLite, миграция базы данных для каждого теста будет очень медленной.

Что вы можете сделать, это использовать черту DatabaseTransactions, которая запускает транзакцию в начале теста и прокручивает еев конце теста.

Подробнее об этом можно прочитать в документах или в этом блоге .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...