Можно ли увеличить скорость теста рельсов?

Я недавно перешел на TDD, но по мере того, как моя кодовая база увеличивается в размерах и усложняется, я все больше и больше жду загрузки фреймворка каждый раз, когда хочу запустить тест.

Я знаю о spec_server rspec, но я использую Test::Unit с shoulda. Я попробовал Snailgun (http://github.com/candlerb/snailgun), но заметил очень незначительное увеличение скорость. Я также пробовал spork-testunit (http://github.com/timcharper/spork-testunit), но он не полностью совместим с моими существующими тестами.

Задержка в выполнении тестов — это определенная болевая точка, которая отталкивает меня от TDD (по крайней мере, с Rails). Кто-нибудь знает какие-нибудь другие варианты?


person Sam    schedule 22.03.2010    source источник


Ответы (3)


Используете ли вы моки там, где вам нужно?

Вы не упоминаете насмешливую структуру. Вы используете один? Или ваши тесты большие и они проверяют такие вещи, как вход на веб-серверы или выполнение запросов к базе данных?

Я слышал практическое правило, согласно которому модульные тесты должны выполняться примерно 100 раз в секунду, что исключает подключение к и использование реальных ресурсов. Тесты, которые обращаются к реальным ресурсам, обычно рассматриваются как интеграционные тесты, и считается, что они работают медленнее, чем модульные тесты.

person JeffH    schedule 22.03.2010
comment
Добавлю только, что Mocha отлично подходит для проб! - person Marcos Placona; 23.03.2010

Вы можете настроить database.yml для использования базы данных SQLite3 в памяти для тестов.

person John Topley    schedule 22.03.2010

Попробуйте автотест. Он наблюдает за вашими файлами и запускает их в фоновом режиме. К тому времени, когда вы закончите редактирование, оно уже будет протестировано, чтобы вы могли его просмотреть.

gem install autotest-rails
autotest

https://rubygems.org/gems/autotest-rails

http://ph7spot.com/musings/getting-started-with-autotest

person Chloe    schedule 01.06.2014