¿Debo usar Protractor o Karma para mis pruebas de extremo a extremo? [cerrado]

124

¿Debo usar Protractor o Karma para mis pruebas de extremo a extremo?

Angular-seed está usando Protractor / Selenium WebDriver para E2E pero el tutorial angular-phonecat usa karma.

Leí que debería usar Karma para las pruebas unitarias y el Transportador para E2E, lo que parece estar bien, pero pensé en preguntar aquí para obtener las opiniones de otros desarrolladores.

screenm0nkey
fuente
1
Se ajusta mejor a las recomendaciones de software . Sin embargo, si publica esta pregunta allí, tendrá que elaborar cuáles son sus requisitos. Meta relacionada
Profesor Allman
55
Karma y Protractor son utilizados y recomendados por el equipo de Angular, pero dado el estado de la documentación (es decir, hay toneladas de ella y es difícil saber qué está actualizado) es difícil saber qué usar y para qué propósito. Esta es una buena pregunta y la respuesta de glpretre fue exactamente lo que estaba buscando también.
Matt
55
No creo que la pregunta fuera demasiado amplia (Protractor vs Karma). Estamos hablando de los marcos, no solo de un software, por lo que la pregunta está en el lugar correcto.
CCC
Vea mi respuesta aquí para una discusión más detallada de casos de uso, ventajas y limitaciones de Karma y Transportador: stackoverflow.com/a/29619467/1614973
Dmitri Zaitsev
Tengo entendido que Protractor no permite probar solo una parte de su aplicación sin la presencia del resto (por ejemplo, burlarse): el código de prueba ni siquiera se ejecuta en el mismo intérprete JS que la aplicación. Sin supervisión del sistema de archivos para modificaciones del código fuente y reactivación automática de las pruebas afectadas. El karma proporciona estos. Envía el código de prueba + código de la aplicación en <script> s al navegador para que se ejecute en el mismo intérprete, es posible, pero no está diseñado para pruebas de extremo a extremo con eventos nativos como si un usuario real estuviera actuando.
robert4

Respuestas:

179

El equipo de AngularJS recomienda usar Protractor ya que reemplazará al corredor de escenario angular:

Angular Scenario Runner está en modo de mantenimiento: si está comenzando un nuevo proyecto Angular, considere usar Protractor .

citado de la documentación de AngularJs .

El tutorial angular-phonecat se desarrolló hace mucho tiempo (principalmente en 2011) y aún no se ha actualizado para usar algunas características nuevas de Angular como Protractor.

EDITAR

En los Documentos del transportador - Preguntas frecuentes :

¿Por qué tanto Karma como Transportador? ¿Cuándo uso cuál?

Karma es una gran herramienta para pruebas unitarias, y Protractor está diseñado para pruebas de integración o de extremo a extremo. Esto significa que pequeñas pruebas para la lógica de sus controladores, directivas y servicios individuales deben ejecutarse utilizando Karma. Las grandes pruebas en las que tiene una instancia en ejecución de toda su aplicación deben ejecutarse utilizando Protractor. El propósito de Protractor es ejecutar pruebas desde el punto de vista de un usuario: si su prueba puede escribirse como instrucciones para que un humano interactúe con su aplicación, debe ser una prueba de extremo a extremo escrita con Protractor.

Aquí hay una gran publicación de blog con más información.

glepretre
fuente
11
De Karma FAQ - karma-runner.github.io/0.10/intro/faq.html - ¿Puedo usar Karma para hacer pruebas de extremo a extremo? Karma ha sido diseñado principalmente para pruebas de bajo nivel (unidad). Si se trata de una aplicación AngularJS, puede usar Karma con el complemento karma-ng-scenery, sin embargo, recomendamos Protractor para pruebas de alto nivel.
mrwaim
Si quiero pruebas unitarias y pruebas e2e, ¿tengo que configurar el entorno de karma para pruebas unitarias y transportador para pruebas ui o pruebas e2e?
Sunil Garg
2
@SunilGarg Sí, tiene que hacerlo, tal vez nuestra estructura de aplicación de inicio podría ayudarlo: github.com/glepretre/angular-requirejs-ready (ignore los detalles de requireJS si no lo usa)
glepretre