angularjs - unit - Conecte Karma Runner a Jenkins CI
test unitario angularjs (2)
¿Utiliza maven como herramienta de construcción? Si es así, eche un vistazo a: https://github.com/eirslett/frontend-maven-plugin . Ejecuta las pruebas, por lo que Jenkins puede mostrar los resultados.
Ayúdame a entender cómo conectar mi pila Angular-Jasmine-Karma a Jenkins. Tengo una aplicación web Angular.js que pruebo con Karma (né Testacular) y Jasmine. Se parece al tutorial angular . Quiero probarlo usando Jenkins Continuous Integration.
Hasta ahora he instalado Angular, Jasmine y Karma de acuerdo con el tutorial. He instalado a Jenkins. Puedo hacer que cada uno trabaje independientemente. Por lo que he visto, parece que Karma debería generar un archivo XML que Jenkins ingiere, pero Karma no está generando un archivo constantemente, y no lo entiendo conceptualmente. ¿En qué punto Jenkins llama Karma?
Una buena respuesta esbozaría las piezas necesarias para hacer pruebas de karma en Jenkins.
Por si acaso, aquí está mi configuración de Karma. Ha sido mutilado en nombre de la depuración.
module.exports = function(config){
config.set({
basePath : ''../'',
files : [
''app/lib/angular/angular.js'',
''app/lib/angular/angular-*.js'',
''app/js/**/*.js'',
''test/unit/**/*.js''
],
exclude : [
''app/lib/angular/angular-loader.js'',
''app/lib/angular/*.min.js'',
''app/lib/angular/angular-scenario.js''
],
autoWatch : true,
frameworks: [''jasmine''],
browsers : [''Chrome''],
plugins : [
''karma-chrome-launcher'',
''karma-firefox-launcher'',
''karma-script-launcher'',
''karma-jasmine''
],
reporters : [''dots'', ''junit'', ''coverage''],
junitReporter : {
outputFile: ''test_out/unit.xml'',
suite: ''unit''
}
coverageReporter : {
type: ''cobertura'',
dir: ''coverage/'',
file: ''coverage.xml''
}
});
};
Primero, necesita un archivo karma.conf.js
que enumere lo siguiente:
reporters: [''progress'', ''coverage'', ''dots'', ''junit''],
junitReporter: {
outputDir: ''karma-results'',
outputFile: ''karma-results.xml''
},
browsers: [''PhantomJS''],
singleRun: true
El elemento más importante bajo la clave de reporters
es junit
. Este es el complemento que traducirá tus resultados de Karma en un archivo XML. Las salidas de prueba deben estar en un formato XML específico para que Jenkins las analice. Puede configurar la ubicación de salida de este archivo XML con la clave junitReporter
. En la clave del browsers
, asegúrese de que está especificando PhantomJS
ya que es muy probable que su servidor Jenkins no tenga una instancia de Chrome o Firefox. La tecla singleRun
se asegura de que el servidor Karma se inicie antes de que se ejecuten las pruebas y se apague cuando finalicen las pruebas.
A continuación, asegúrese de que todos los siguientes módulos de nodo estén instalados en su servidor ejecutando estos comandos:
npm install -g karma-cli
npm install -g karma --save-dev
npm install -g phantomjs
npm install -g karma-jasmine --save-dev
npm install -g karma-phantomjs-launcher --save-dev
npm install -g karma-coverage
Visita tu servidor Jenkins a través de un navegador. Puede contactar con su servidor Jenkins en
http://server-ip-address:8080
Antes de seguir adelante, asegúrese de tener instalados los "Complementos del inyector de entorno" y los "Complementos Junit". Una vez que esté allí, haga clic en New Item
en el lado izquierdo de la página de inicio de Jenkins. Tenga los siguientes parámetros establecidos para su trabajo:
El "Contenido de propiedades" le permite asignar a Jenkins un PATH en su servidor y le permite usar la palabra clave karma
en la sección "Comando" que se encuentra debajo. La sección "Comando" le dice a Jenkins que cd a la carpeta donde reside su archivo karma.conf.js
e inicie Karma.
Si usa los valores de outputDir
y outputDir
en el ejemplo anterior de karma.conf.js
, entonces puede mantener el valor de entrada "Test report XMLs". De lo contrario, cambie eso para reflejar la nueva ruta a donde se generará su archivo de resultados XML.
Ahora, cada vez que ejecute este trabajo en Jenkins, podrá ver si se aprobó o no y también los resultados de las líneas de pedido de sus pruebas.