Интеграционные тесты Rails: сокращение времени выполнения
Я хочу поделиться своими находками и услышать от других об успешных и неудачных попытках сократить время выполнения интеграционных тестов приложений Rails (будь то "обычные" тесты, основанные на Cucumber или RSpec).
Вопрос подразумевает, что тесты включают в себя базу данных, рендеринг представления и, возможно, JavaScript/AJAX. Ei test не заглушайте / не высмеивайте медленные части приложения.
1 ответ
Авторский ответ. Я попробовал две вещи: плагин Spork и базу данных в памяти. Моя конфигурация dev: Ubuntu VirtualBox, размещенная на Win7, Ruby 1.8.7, Rails 3, SQLite.
Плагин Spork уменьшил время запуска моих тестов с 35 до 2 секунд. Я суммировал здесь шаги, но они достаточно хорошо описаны в github readme. В этом посте также описывается, как использовать его с Guard для обеспечения перезапуска сервера spork при изменении файлов.
Я пытался использовать базу данных в памяти, чтобы сократить время выполнения. В некоторых случаях они сокращают время выполнения на 10%, но имеют 2-секундные накладные расходы на время запуска для создания схемы. И результаты очень больше, чем я мог наблюдать улучшение. Поэтому я решил для себя, что улучшение не стоит хлопот.
Также я использовал RVM для замены Ruby 1.8.7 на 1.9.2. Уменьшено время выполнения с 58 до 42 секунд.
Вывод: Spork и замена 1.8.7 на 1.9.2 могут значительно улучшить ваш опыт работы с TDD.