2009-06-02 12 views
22

Al desarrollar una aplicación de Grails 1.0.5, me horroriza la lentitud del comando grails test-app. A pesar de que las pruebas reales toman sólo ~ 10 segundos, toda la ejecución se suma aCómo acelerar la ejecución de la prueba de grails

verdadera 1m26.953s usuario 0m53.955s sys 0m1.860s

Esto incluye griales bootstrapping, plugins que cargan , compilando todo el código, etc.

Cualquier sugerencia sobre cómo acelerar la ejecución de grails test-app sería muy apreciada.

Respuesta

35

Puede usar el modo interactivo para acelerar las ejecuciones de prueba.

Sólo tiene que ejecutar

grails interactive 

A continuación, escriba

test-app 

La primera vez será el mismo de siempre, pero cada vez después de que será mucho más rápido. Actualmente hay algunos problemas con el modo interactivo (como quedarse sin memoria después de algunas ejecuciones) pero aún así creo que vale la pena.

+0

Brillante! Gracias. –

+6

Simplemente recomiendo configurar su espacio permgen más generosamente o se agotará después de una docena de ciclos. Esto es lo que uso: -XX: PermSize = 64m -XX: MaxPermSize = 512m – Kuukage

+1

Ejecutamos nuestro proyecto de grails a través de Maven, en este caso el primer comando es: mvn grails: exec -Dcommand = "interactive". –

1

Si usted todavía está utilizando 1.5.x maravilloso que probablemente podría de afeitar algunos segundos mediante la actualización a 1.6 Groovy

+0

Gracias por la respuesta. No voy a hacer ese cambio ya que no estoy seguro de cómo funcionará Grails 1.0.x con 1.6.x y 1.5.x es el incluido. –

6

No hay reglas duras y rápidas para acelerarlo, y los problemas de rendimiento que que estás viendo podría ser específico para tu aplicación.

Si su inicialización tarda ~ 75 segundos, eso suena bastante largo. Echaré un vistazo de cerca a lo que tengas en tu archivo Bootstrap.groovy para ver si se puede reducir.

¿Tiene algún complemento adicional que no necesite (o que podría tener una importante penalización de rendimiento)?

Puede que esta no sea una posibilidad para ti en este momento, pero las mejoras de velocidad en grails 1.1.1/groovy 1.6.3 sobre grails 1.0.5/groovy 1.5.7 son bastante significativas.

Otra cosa que realmente me ayuda cuando se prueba, es especificar las pruebas de integración sólo o pruebas de unidad sólo si estoy workiing en uno o el otro:

grails test-app -unit 

grails test-app -integration 

También puede especificar una clase de prueba en particular (sin las "pruebas" prefijo), para ejecutar una sola prueba de que realmente puede ayudar con TDD (ex por "MyServiceTests" integración):

grails test-app -integration MyService 

En griales 1.1.1, bootstrapping con 5 plugins y clases de ~ 40 dominio me lleva menos de 20 segundos.

+0

Gracias por las sugerencias. Me gustaría agregar que este también es mi hardware de desarrollo lento. Al pasar a Grails 1.6.3 se cortó solo un 5%. –

+1

@Robert Debes querer decir maravilloso 1.6.3. –

1

grails ahora viene con http://grails.org/plugin/testing instalado. esto se burla de las cosas de dominio, por lo que puede hacer algunas pruebas de clases de dominio como unidades pruebas. corren bastante rápido.

1

Puede elegir ejecutar pruebas unitarias y de integración en paralelo, así - ver esto article

1

El aumento de las opciones de memoria/java JVM sin duda puede acelerar las cosas. La cantidad de memoria que puede proporcionar depende de su equipo.

Si ejecuta griales desde la línea de comandos, establezca la variable de entorno GRAILS_OPTS. Añadir algo como esto para ~/.bash_profile

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

Si utiliza GGTS (Eclipse) que tendrá que añadir esto a los argumentos de VM de la configuración de ejecución. GGTS vm args

También hay algunas opciones de configuración de JVM que se pueden modificar para aumentar la velocidad:

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