У меня есть проект на PHP с использованием Yii2 и тестирую я все это дело Codeception.
Все бы ничего, но тесты с использованием БД выполняются нереально долго. В частности, по причине большого количества фикстур с большим количеством данных.
Я даже разделил тесты на unit и integration -- с без БД и с ним. Посмотрите на разницу:
$ time ./vendor/bin/codecept run unit
Tests.unit Tests (67)
Time: 4.22 seconds, Memory: 71.25MB
OK (67 tests, 380 assertions)
real 0m6.044s
user 0m1.292s
sys 0m0.208s
Интеграционные:
$ time ./vendor/bin/codecept run integration
Tests.integration Tests (35)
Time: 4.76 minutes, Memory: 54.25MB
Tests: 35, Assertions: 58, Failures: 1.
real 4m46.052s
user 4m35.880s
sys 0m0.584s
То есть где-то в 50 раз дольше.
Вопрос вот в чем: вместо того, чтобы загружать и выгружать из БД строки, может быть можно как-то выгрузить в БД все данные, сохранить файл таблицы со всеми этими данными и перед каждым тестом копировать этот файл, восстанавливая набор тестовых данных. В SQLite с этим проще, но в моем случае подменить не получится.
Если это не возможно или не имеет смысла, то как я могу ускорить выполнение тестов с использованием БД?
Дополнительная информация:
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как можно сохранить значение типа Timestamp в Shared Preferences? Насколько я знаю, у Editor есть только методы для int, string, boolean, long, float
Как в JavaFX реализовать модальное окно для получения папки удаленного компьютера? Для получения папки на самом компьютере делал через DirectoryChooserМожет...