Pregunta Herramientas de prueba de unidad de JavaScript para TDD


He examinado y considerado muchas pruebas de unidad de JavaScript y herramientas de prueba, pero no he podido encontrar una opción adecuada para cumplir con TDD por completo. Entonces, ¿hay una herramienta de prueba de unidad de JavaScript que sea totalmente compatible con TDD?


717


origen


Respuestas:


Karma o Transportador

Karma es un corrector de prueba de JavaScript construido con Node.js y destinado a pruebas unitarias.

El transportador es para pruebas de extremo a extremo y utiliza el Selenium Web Driver para realizar pruebas.

Ambos han sido realizados por el equipo Angular. También puede usar cualquier assertion-library que desee.

Screencast: Karma Primeros pasos

relacionado:

pros:

  • Utiliza node.js, por lo que es compatible con Win / OS X / Linux
  • Ejecute pruebas desde el navegador o sin cabeza con PhantomJS
  • Ejecutar en varios clientes a la vez
  • Opción para iniciar, capturar y cerrar automáticamente navegadores
  • Opción para ejecutar servidor / clientes en la computadora de desarrollo o por separado
  • Ejecutar pruebas desde la línea de comandos (se puede integrar en ant / maven)
  • Escribir pruebas estilo xUnit o BDD
  • Admite múltiples marcos de prueba de JavaScript
  • Pruebas de ejecución automática al guardar
  • Solicitudes de proxies entre dominios
  • Posible personalizar:
    • Extiéndalo para ajustar otros frameworks de prueba (Jasmine, Mocha, QUnit incorporado)
    • Sus propias afirmaciones / refuta
    • Reporteros
    • Lanzadores del navegador
  • Plugin para WebStorm
  • Compatible con Netbeans IDE

Contras:

mocha.js

No estoy totalmente calificado para comentar las características, fortalezas y debilidades de mocha.js, pero me lo recomendó alguien en quien confío en la comunidad de JS.

Lista de características, según lo informado por su sitio web:

  • soporte de navegador
  • soporte asincrónico simple, incluidas las promesas
  • informe de cobertura de prueba
  • soporte de diff de cadena
  • javascript # API para ejecutar pruebas
  • estado de salida correcto para el soporte de CI, etc.
  • auto-detecta e inhabilita la coloración para no-ttys
  • asigna las excepciones no detectadas al caso de prueba correcto
  • soporte de prueba de tiempo de espera asincrónico
  • Tiempos de espera específicos de prueba
  • soporte de notificación gruñido
  • informa duraciones de prueba
  • destaca pruebas lentas
  • soporte del vigilante de archivo
  • detección de fugas de variable global
  • opcionalmente ejecutar pruebas que coincidan con una expresión regular
  • auto-exit para evitar "colgar" con un bucle activo
  • fácilmente metagenerar suites y casos de prueba
  • Soporte de archivo mocha.opts
  • títulos de suite seleccionables para filtrar la ejecución de prueba
  • soporte del depurador de nodos
  • detecta múltiples llamadas a done ()
  • usa cualquier biblioteca de aserciones que quieras
  • informes extensibles, incluidos con más de 9 periodistas
  • DSL de prueba extensible o "interfaces"
  • antes, después, antes de cada uno, después de cada gancho
  • soporte de transpiler arbitrario (coffee-script, etc.)
  • Paquete de TextMate

yolpo

yolpo

Esto ya no existe, redirige a sequential.js en lugar

Yolpo es una herramienta para visualizar la ejecución de javascript. Se anima a los desarrolladores de Javascript API a escribir sus casos de uso para mostrar y contar su api. Tales casos de uso forman la base de las pruebas de regresión.

AVA

AVA logo

Corredor de prueba futurista con soporte incorporado para ES2015. Aunque JavaScript tiene un único subproceso, IO en Node.js puede suceder en paralelo debido a su naturaleza asincrónica. AVA aprovecha esto y ejecuta sus pruebas al mismo tiempo, lo que es especialmente beneficioso para las pruebas pesadas IO. Además, los archivos de prueba se ejecutan en paralelo como procesos separados, lo que le proporciona un mejor rendimiento y un entorno aislado para cada archivo de prueba.

  • Mínimo y rápido
  • Sintaxis simple de prueba
  • Ejecuta pruebas concurrentemente
  • Aplica la escritura de pruebas atómicas
  • Sin globales implícitos
  • Entorno aislado para cada archivo de prueba
  • Escriba sus pruebas en ES2015
  • Promesa de apoyo
  • Soporte de la función del generador
  • Soporte de función Async
  • Soporte observable
  • Refuerzos mejorados
  • TAP opcional o utput
  • Limpiar rastros de pila

Buster.js

Un corrector de prueba de JavaScript construido con Node.js. Muy modular y flexible. Viene con su propia biblioteca de afirmación, pero puede agregar la suya propia si lo desea. los biblioteca de aserciones está desacoplado, por lo que también puede usarlo con otros corredores de prueba. En lugar de usar assert(!...) o expect(...).not..., usa refute(...) que es un buen giro imho

Un juego de herramientas de prueba de JavaScript del navegador. Realiza pruebas de navegador con la automatización del navegador (piense en JsTestDriver), pruebas de páginas HTML de estilo simple, pruebas en buscadores sin cabeza (phantomjs, jsdom, ...) y más. Echa un vistazo a el resumen!

Un conjunto de herramientas de prueba de Node.js. Obtiene la misma biblioteca de casos de prueba, la biblioteca de afirmaciones, etc. Esto también es excelente para el navegador híbrido y el código Node.js. Escriba su caso de prueba con Buster.JS y ejecútelo tanto en Node.js como en un navegador real.

Screencast: Buster.js Primeros pasos (2:45)

pros:

  • Utiliza node.js, por lo que es compatible con Win / OS X / Linux
  • Ejecute pruebas desde el navegador o sin cabeza con PhantomJS (pronto)
  • Ejecutar en varios clientes a la vez
  • Admite la prueba NodeJS
  • No es necesario ejecutar servidor / clientes en la computadora de desarrollo (no es necesario para IE)
  • Ejecutar pruebas desde la línea de comandos (se puede integrar en ant / maven)
  • Escribir pruebas estilo xUnit o BDD
  • Admite múltiples marcos de prueba de JavaScript
  • Deferir pruebas en lugar de comentarlas
  • SinonJS incorporado
  • Pruebas de ejecución automática al guardar
  • Solicitudes de proxies entre dominios
  • Posible personalizar:
    • Extiéndalo para ajustar otros frameworks de prueba (JsTestDriver incorporado)
    • Sus propias afirmaciones / refuta
    • Reporteros (xunit XML, puntos tradicionales, especificación, tap, teamcity y más incorporados)
    • Personaliza / reemplaza el HTML que se usa para ejecutar las pruebas del navegador
  • Integración de TextMate y Emacs

Contras:

  • Stil en beta por lo que puede ser con errores
  • Sin complemento para Eclipse / IntelliJ (todavía)
  • No agrupa los resultados por os / browser / version como TestSwarm *. Sin embargo, imprime el nombre y la versión del navegador en los resultados de la prueba.
  • Sin historial de resultados de pruebas anteriores como TestSwarm *
  • No funciona completamente en Windows a partir de mayo de 2014

* TestSwarm también es un servidor de integración continua, mientras que usted necesita un servidor de CI separado para Buster.js. Sin embargo, muestra informes xUnit XML, por lo que debería ser fácil de integrar con Hudson, Bambú u otros servidores de CI

TestSwarm

https://github.com/jquery/testswarm

TestSwarm oficialmente ya no está en desarrollo activo como se indica en su página web de GitHub. Recomiendan Karma, browserstack-runner o Intern.

Jazmín

Jasmine

Este es un corredor de pruebas del lado del cliente que puede interesar a los desarrolladores familiarizados con Ruby on Rubils on Rails. La sintaxis se basa en RSpec eso se usa para probar en los proyectos de Rails.

Jasmine es un marco de desarrollo impulsado por el comportamiento para probar tu código JavaScript. No depende de ningún otro marco de JavaScript. No requiere un DOM.

Si tiene experiencia con este corredor de prueba, por favor contribuya con más información :)

Proyecto inicio: http://jasmine.github.io/

QUnit

QUnit se enfoca en probar JavaScript en el navegador mientras brinda la mayor comodidad posible al desarrollador. Blurb desde el sitio:

QUnit es un paquete de prueba de unidad de JavaScript poderoso y fácil de usar. Es utilizado por los proyectos jQuery, jQuery UI y jQuery Mobile y es capaz de probar cualquier código genérico JavaScript

QUnit comparte algo de historia con TestSwarm (arriba):

QUnit fue desarrollado originalmente por John Resig como parte de jQuery. En 2008, obtuvo su propio hogar, nombre y documentación API, lo que permite que otros también lo utilicen para sus pruebas unitarias. En ese momento todavía dependía de jQuery. Una reescritura en 2009 solucionó eso, ahora QUnit funciona de manera completamente independiente.   Los métodos de aserción de QUnit siguen la especificación de la prueba de unidad CommonJS, que hasta cierto punto fue influenciada por QUnit.

Proyecto inicio: http://qunitjs.com/

Sinon

Otra gran herramienta es sinon.js por Christian Johansen, el autor de Desarrollo de JavaScript basado en pruebas. Mejor descrito por él mismo:

Espías de prueba independiente, trozos y burlas   para JavaScript. Sin dependencias funciona   con cualquier marco de prueba de unidad.

Interno

los Sitio web de pasante proporciona una comparación directa de características con los otros marcos de prueba en esta lista. Ofrece más funciones listas para usar que cualquier otro sistema de prueba basado en JavaScript.


1468



Echa un vistazo a el marco de prueba de la unidad Dojo Object Harness (DOH) que es bastante arnés independiente del marco para las pruebas de unidad de JavaScript y no tiene ninguna dependencia de Dojo. Hay una muy buena descripción de esto en Pruebas unitarias de aplicaciones Web 2.0 utilizando el Dojo Objective Harness.

Si desea automatizar las pruebas de UI (un punto dolorido de muchos desarrolladores), consulte doh.robot  (actualización temporal hacia abajo: otro enlace) http://dojotoolkit.org/reference-guide/util/dohrobot.html ) y dijit.robotx  (Temporal abajo). Este último está diseñado para una prueba de aceptación. Actualizar:

Los artículos a los que se hace referencia explican cómo usarlos, cómo emular a un usuario que interactúa con su UI usando el mouse y / o el teclado, y cómo grabar una sesión de prueba, para que pueda "jugar" más tarde automáticamente.


63



Chutzpah - Un corredor de prueba de JavaScript

Creé un proyecto de código abierto llamado Chutzpah, que es un corredor de prueba para las pruebas de unidades de JavaScript. Chutzpah le permite ejecutar pruebas de unidades de JavaScript desde la línea de comandos y desde dentro de Visual Studio. También es compatible con ejecutar en el servidor de integración continua de TeamCity.


34



La sección de JavaScript de la entrada de Wikipedia, Lista de marcos de prueba de la unidad, proporciona una lista de opciones disponibles. Indica si funcionan en el lado del cliente, en el lado del servidor o en ambos.


26



BusterJS

También hay BusterJS de Christian Johansen, el autor de Test Driven Javascript Development y el framework Sinon. Desde el sitio:

Buster.JS es un nuevo marco de prueba de JavaScript. Realiza pruebas de navegador al automatizar las ejecuciones de prueba en navegadores reales (piense en JsTestDriver), así como en las pruebas de Node.js.


14



google-js-test:

Marco de prueba de JavaScript lanzado por Google: https://github.com/google/gjstest

  • Tiempo de ejecución y ejecución de prueba extremadamente rápido, sin tener que ejecutar un   navegador.
  • Salida limpia y legible en el caso de las pruebas de aprobación y falla.
  • UN corredor de prueba basado en navegador eso simplemente puede ser actualizado   cada vez que se cambia JS.
  • Estilo y semántica que se asemejan Prueba de Google para C ++.
  • Un marco de burla incorporado que requiere un código repetitivo mínimo (por ejemplo, no    $tearDown o $verifyAll) con estilo y semántica basada en Google   Marco burlón de C ++.

Actualmente no hay binarios para Windows


10



Ahora estamos usando Qunit con Pavlov y JSTestDriver todos juntos. Este enfoque funciona bien para nosotros.

QUnit 

Pavlov, fuente

jsTestDriver, fuente


8