Как ускорить выполнение теста Grails - PullRequest
23 голосов
/ 03 июня 2009

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

настоящий 1м26.953с пользователь 0m53.955s sys 0m1.860s

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

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

Ответы [ 7 ]

35 голосов
/ 10 июля 2009

Вы можете использовать интерактивный режим для ускорения ваших тестовых прогонов.

Просто беги

grails interactive

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

test-app

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

6 голосов
/ 04 июня 2009

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

Если ваша начальная загрузка занимает ~ 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 секунд.

1 голос
/ 03 ноября 2013

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

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

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

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

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

-XX:+UseCodeCacheFlushing 
-XX:MaxInlineLevel=15  
-noverify  (turns off class validation) 
1 голос
/ 21 июня 2012

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

1 голос
/ 03 ноября 2011

Пожалуйста, смотрите мой ответ здесь. Плагин, опирающийся на плохо определенный артефакт maven, может заставить Граилса каждый раз искать и искать новую версию.

Grails очень медленно разрешает определенные зависимости

1 голос
/ 06 августа 2009

Grails теперь поставляется с http://grails.org/plugin/testing. это макетирует предметную область, поэтому вы можете провести некоторое тестирование классов домена как unit tests. они бегают довольно быстро.

1 голос
/ 03 июня 2009

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

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