2011-09-30 11 views
16

Tenemos un rico cliente web. Nuestros controladores y fachadas de servicios están escritos en coffeescript (JavaScript) y jquery. En el pasado habrían sido java.¿Cómo podemos ejecutar pruebas de JavaScript jazmín desde Jenkins (Hudson) sin cargar un JSP?

Para ejecutar nuestras pruebas de jazmín JavaScript de Jenkins/Hudson, usamos junit y htmlunit de java para cargar una página jsp orientada a prueba que incluye las especificaciones de jazmín.

Cuando la unidad Htmlunit intenta ejecutarse, explota tratando de obtener la página() probablemente debido a una ruta de clase del analizador XML que es extremadamente difícil de rastrear en nuestro mundo.

Solo deseamos poder ejecutar nuestras pruebas de JavaScript de Jenkins y hacer que informe la falla si una prueba de JavaScript no se aprueba. Solo estamos usando jsp y htmlunit para ejecutar pruebas de JavaScript. ¿Podemos cargar las pruebas de JavaScript y el código de JavaScript en un motor de JavaScript con Jenkins como lo que lo inicia? ¿Si es así, cómo?

Respuesta

0

¿Se puede usar selenio? Eso realmente usaría un navegador real y se acercaría lo más posible al entorno real.

+1

Gracias por su respuesta. Es una buena pregunta. Volví a la cuestión de cómo lograr que Jenkins arranque el selenio, realizar pruebas de jazmín y ver resultados. – finneycanhelp

+0

Eso es exactamente lo que estoy buscando ... – naugtur

+0

@ sarel-botha: Eche un vistazo a: 1. SauceLabs, 2. Sauce OnDemand plugin y Saucery2 o Saucery3 NuGet paquetes para hacer sus pruebas automatizadas con Jenkins y SauceLabs easy –

13

Parece que estás en un entorno Java. Mi jasmine-maven-plugin podría ser una buena opción.

+1

Gracias tú. Tu código es increíble y agradezco tu contribución. Sí, estoy en un entorno Java y su código inspiró una solución. Preferiría omitir el uso de Java para ejecutar Jasmine y tener algo en jenkins para comenzar las pruebas de jazmín. Parece que debería hacer una solicitud de plugin de jenkins. – finneycanhelp

6

he resuelto previamente este problema mediante la ejecución de las pruebas con un plugin llamado Node.js jasmine-node

Esta solución, por supuesto, requiere Node.js y unos módulos de nodo para funcionar correctamente las pruebas de jazmín. No existe un navegador real ejecutando las pruebas, sino uno emulado usando un módulo llamado jsdom, que básicamente crea un navegador sin cabeza, y más específicamente, un DOM, con el que las pruebas pueden interactuar.

Hay módulos de nodo para jQuery, guión bajo y otros también, por lo que también se pueden probar. Incluso puede omitir toda la emulación del navegador si prefiere ejecutar las pruebas en un navegador, aunque me resulta demasiado engorroso en comparación con las pruebas automatizadas de Jenkins.

jasmine-node genera informes de prueba jUnit, que Jenkins puede interpretar muy bien.

Me acabo de dar cuenta de que hay un plugin de jenkins-jasmine-node que puede facilitar este proceso.

8

Jasmine Reporters también sería una solución. Tiene instrucciones para ejecutarse headless a través de PhantomJS, por ejemplo, y puede generar JUnit XML para que Jenkins pueda entender los resultados de la prueba de forma nativa, graficando el conteo de pruebas, la duración y la falla en el tiempo.

Además, el contenedor "xvfb-run" a menudo provisto con xvfb es de gran ayuda aquí, por lo que puede hacer "xvfb-run phantomjs.runner.sh ..." en un entorno verdaderamente sin cabeza.

1

ronco es su amigo

tiene esta configuración y es muy agradable , además, esto te da un lugar para comenzar a hacer tu servidor de compilación hacer otras cosas agradables tales como implementación, pruebas unitarias, etc. ya sabes, otras cosas agradables

+0

"comience a hacer que su servidor de compilación haga otras cosas agradables, como" ...? –

+0

despliegue, pruebas unitarias, etc. ya sabes, otras cosas agradables – aqm

Cuestiones relacionadas