Pocas preguntas:
- ¿Cómo se relacionan el Karma y el framework de prueba X (Jasmine, Mocha, QUnit)?
- ¿Cuál es el marco equivalente en el mundo Java? Supongo que Jasmine, Mocha, QUnit es igual a jUnit / TestNG. ¿Qué tal Karma?
- ¿Puedo ejecutar el framework de prueba X (por ejemplo, Jasmine) sin Karma?
- ¿Karma es para prueba de unidad o prueba de integración / e2e? Esta referencia muestra es para prueba unitaria, sin embargo, esto es para prueba e2e.
javascript
unit-testing
integration-testing
Lee Chee Kiam
fuente
fuente
Respuestas:
Karma es un corredor de prueba de navegador.
La idea es que los navegadores no tengan un concepto nativo de cargar archivos de prueba, ejecutarlos e informar resultados. Lo que hace el karma es (aproximadamente):
Mirando cada parte:
(1) Esos archivos serán sus archivos js reales; le dirá al karma cómo cargarlos. Si usa requirejs, hay un complemento de karma y se necesita algo de configuración.
(2) Esas pruebas se pueden escribir en una variedad de marcos de prueba de Javascript (Jasmine, QUnit, Mocha); Este es el código JS que se ejecuta en el navegador.
(3) La página web personalizada será un poco diferente para cada marco de prueba; Es por eso que el karma tiene complementos para diferentes marcos.
(4) Karma puede iniciar la página en muchos navegadores (FF, Chrome o navegadores sin cabeza como PhantomJs).
(5) Informar al karma es, nuevamente, dependiente del marco, y se trata con complementos de karma.
Entonces para responder a sus preguntas:
fuente
Una forma más corta de entender la diferencia:
Las personas que prueban con Jasmine / Mocha simple probablemente ejecutan todo el código con la máquina virtual Node.
Agregar Karma a la mezcla (además de su marco de elección actual) ejecutará su conjunto de pruebas con el motor de otros navegadores.
Al hacer esto, obtienes los pequeños extras que obtienes con un entorno de navegador. Será más fácil probar el código relacionado con DOM, pero también estará renunciando a los recursos adicionales proporcionados por el motor Node (como el sistema de archivos / acceso de shell)
fuente
La tesis del tipo que diseñó Karma fue muy informativa al describir las soluciones existentes y compararlas, y, por supuesto, al describir el Karma mismo.
https://github.com/karma-runner/karma/blob/master/thesis.pdf
Resumen: Karma es un corredor de pruebas. QUnit, Jasmine, Mocha, ... Karma tiene ventajas para otros corredores de prueba para mejorar su ciclo de desarrollo TDD / BDD. "Vigila" los archivos, por lo que cuando guarda un cambio, Karma ejecuta pruebas e informes al instante, sin cambiar el contexto al navegador web para ejecutar la prueba.
En resumen, ¿quizás la pregunta debería ser Karma Y Jasmine o Mocha o QUnit?
fuente