Подтвердить что ты не робот

Как ускорить выполнение теста Grails

При разработке приложения Grails 1.0.5 я в ужасе от того, насколько медленна команда grails test-app. Несмотря на то, что фактические тесты занимают всего ~ 10 секунд, все выполнение сводится к

real 1m26.953s пользователь 0m53.955s sys 0m1.860s

Это включает загрузку grails, загрузку плагинов, компиляцию всего кода и т.д.

Любые подсказки о том, как ускорить выполнение grails test-app, будут с благодарностью.

4b9b3361

Ответ 1

Вы можете использовать интерактивный режим, чтобы ускорить ваши тестовые прогоны.

Просто запустите

grails interactive

Затем введите

test-app

Первый раз будет таким же, как обычно, но каждый раз после этого будет значительно быстрее. В настоящее время есть некоторые проблемы с интерактивным режимом (например, исчерпание памяти после нескольких прогонов), но я все равно считаю, что это того стоит.

Ответ 2

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

Если ваш загрузочный захват занимает ~ 75 секунд, это звучит довольно долго. Я бы внимательно рассмотрел все, что у вас есть в файле Bootstrap.groovy, чтобы узнать, можно ли его уменьшить.

Есть ли у вас дополнительные плагины, которые вам могут не понадобиться (или это может привести к серьезному снижению производительности)?

Это может быть не для вас сейчас, но улучшения скорости в grails 1.1.1/ groovy 1.6.3 над grails 1.0.5/groovy 1.5.7 довольно значительны.

Еще одна вещь, которая действительно помогает мне при тестировании, заключается в том, чтобы указывать только тесты интеграции или только модульные тесты, если я работаю над тем или иным:

grails test-app -unit

grails test-app -integration

Вы также можете указать конкретный тестовый класс (без префикса "Тесты" ) для запуска одного теста, который может действительно помочь с TDD (например, для интеграции с MyServiceTests):

grails test-app -integration MyService

В grails 1.1.1 загрузочная загрузка с 5 плагинами и ~ 40 классами доменов занимает менее 20 секунд.

Ответ 3

Если вы все еще используете Groovy 1.5.x, вы могли бы сбрить несколько секунд, обновив до Groovy 1.6

Ответ 4

Теперь grails поставляется с http://grails.org/plugin/testing. это издевается над материалом домена, поэтому вы можете провести некоторое тестирование классов домена в качестве модульных тестов. они работают довольно быстро.

Ответ 6

Вы также можете параллельно запускать тесты на единицу и интеграцию - см. статью

Ответ 7

Увеличение параметров java memory/JVM может определенно ускорить процесс. Объем памяти, который вы можете дать, зависит от вашего оборудования.

Если вы используете grails из командной строки, установите переменную среды GRAILS_OPTS. Добавьте что-то вроде ~/.bash_profile

export GRAILS_OPTS="-Xms3000M -Xmx3000M -XX:PermSize=256m -XX:MaxPermSize=512m"

Если вы используете GGTS (Eclipse), вам нужно добавить это в аргументы VM конфигурации запуска. GGTS vm args

Также есть несколько настроек JVM, которые можно изменить для увеличения скорости:

-XX:+UseCodeCacheFlushing 
-XX:MaxInlineLevel=15  
-noverify  (turns off class validation)