node - pruebas unitarias javascript
¿Cómo se ejecutan pruebas unitarias en todos los navegadores? (14)
Como la gente ya lo ha dicho, debes usar JsTestDriver. Tiene su propio sistema de prueba, pero puede usar otras bibliotecas de prueba con él, por ejemplo Jasmine ( http://pivotal.github.com/jasmine/ ). Puede encontrar una lista de adaptadores para JsTestDriver aquí: http://code.google.com/p/js-test-driver/wiki/XUnitCompatibility
Nunca he usado Selenium, pero supongo que es para simular la interacción del usuario en todos los navegadores.
Eso es como pruebas de integración.
Pero, ¿cómo se prueban las bibliotecas / frameworks js (pruebas unitarias) en todos los navegadores de forma automatizada?
Como sugiere la publicación referenciada en un artículo anterior, puede usar http://code.google.com/p/js-test-driver/ . Es específicamente para pruebas de unidades de JavaScript en varios navegadores, exactamente lo que desea. Lo he estropeado y es bastante bueno. Aunque no he hecho ninguna prueba comercial seria.
Debe considerar las capacidades que ofrece crossbrowsertesting.com (no es gratis). Para la prueba js prueba JsUnit (http://www.jsunit.net/).
Citado de su página de inicio
JsUnit es un marco de pruebas unitarias para JavaScript del lado del cliente (en el navegador). Es esencialmente un puerto de JUnit a JavaScript. También se incluye una plataforma para automatizar la ejecución de pruebas en múltiples navegadores y máquinas múltiples que ejecutan diferentes sistemas operativos.
Debes consultar http://saucelabs.com/ un entorno de selenio en la base de la nube que te permite construir tu prueba y luego subirlos, ejecutarlos en tantos navegadores como quieras.
El mejor uno es el de YUI: http://developer.yahoo.com/yui/3/test/ Pero hacer pruebas unitarias en cada navegador es un poco difícil ... La mayoría de las personas simplemente prueba con él durante el desarrollo y simplemente use node.js para probar más adelante en caso de que rompan algo.
Hay pocas compañías que se especializan en pruebas cruzadas.
http://saucelabs.com/ (ya mencionado aquí)
Usa la lib de prueba que quieras.
Me gustaría buscar QUnit , que es lo que jQuery usa. Lo he ejecutado en muchos navegadores de escritorio, iPhones y teléfonos con Android.
Hay algunos tutorials geniales y se pueden integrar fácilmente con cosas como js-test-driver . QUnit se modela después de JUnit y de todos los demás marcos de prueba de xUnit (como PHPUnit) por lo que es fácil seleccionar la API.
La sintaxis básica es la siguiente:
test("my first test", function() {
var str = "hello";
equals( "hello", str, "Should be hello" );
});
También se ve bastante bien:
No lo he usado hasta ahora, y todavía está en versión beta, pero FuncUnit declara a sí mismo como "Un conjunto de pruebas funcionales basado en qUnit, Selenium y jQuery".
También hay una infographic explica cómo funciona
Tal vez es algo que quieres? El repositorio de Github parece ser bastante activo.
Para las pruebas unitarias, debe buscar soluciones que no carguen un navegador para realizar las pruebas.
Puedes ver algo como RhinoUnit para eso - http://code.google.com/p/rhinounit
También eche un vistazo al marco de prueba de la unidad Dojo Object Harness (DOH) http://dojotoolkit.org/reference-guide/util/doh.html
Mira una pregunta similar aquí que puede darte una idea sobre cómo TDD js - Herramientas de prueba de unidades de JavaScript para TDD
Para probar la unidad, puede probar http://code.google.com/p/js-test-driver/
JsTestDriver consiste en un único archivo JAR que contiene todo lo que necesita para comenzar. Para una discusión en profundidad de la opción de línea de comando, vea GettingStarted.
Aquí hay una descripción general de cómo funciona JsTestDriver en tiempo de ejecución ...
Para probar varios navegadores en paralelo, se usaría Selenium Grid. Por favor, eche un vistazo aquí: http://selenium-grid.seleniumhq.org/step_by_step_installation_instructions_for_windows.html para obtener instrucciones paso a paso sobre cómo usarlo.
Puedes echar un vistazo a TestSwarm :
proyecto en el que estoy trabajando: TestSwarm ...
Su construcción es muy simple. Es un cliente tonto de JavaScript que continuamente hace ping a un servidor central buscando más pruebas para ejecutar. El servidor recopila suites de prueba y las envía a los clientes respectivos.
Todas las suites de prueba se recopilan. Por ejemplo, 1 "commit" puede tener 10 suites de prueba asociadas (y se distribuirá a una selección de navegadores) ...
Lo bueno de esta construcción es que puede funcionar de manera tolerante a fallas. Los clientes pueden ir y venir. En un momento dado, es posible que no haya ningún Firefox 2 conectado, en otro momento podría haber treinta. Los trabajos se ponen en cola y se dividen a medida que la carga lo requiere. Además, el cliente es lo suficientemente simple como para poder ejecutarlo en dispositivos móviles (a la vez que es completamente independiente del marco de prueba) ...
Selenium o SauceLabs, etc. no son pruebas unitarias. Son soluciones funcionales / de prueba de integración.
Necesita abstraer sus usos externos como DOM para probar la unidad javascript.
Escriba sus pruebas para que puedan usar cualquier biblioteca externa como jquery por configuración. De modo que puede probar su lógica de forma unitaria sin tocar ninguna externalidad y también puede probar las pruebas entre navegadores.
Ya no se mantiene activamente, pero aún estoy contento con JSUnit para las pruebas de unidad de Javascript: https://github.com/pivotal/jsunit
Incluye tanto un marco HTML / Javascript que puede ejecutar en el navegador como un corredor de prueba basado en Java que puede invocar desde hormiga.