2012-09-28 15 views
7

Escribo una aplicación de Windows 8 y pruebas de unidades de escritura. ¿Cómo puedo ejecutarlos, de forma automatizada, dentro del entorno de Windows 8?¿Cómo automatizar las pruebas unitarias para aplicaciones HTML5 de Windows 8?

Si escribo archivos JavaScript súper simples, sin dependencias en el entorno de Windows 8 o el DOM, puedo probarlos desde la línea de comandos con Node.js. Esto es muy rápido (menos de un segundo).

Si necesito involucrar el DOM, y mantengo mi uso de DOM a funciones no muy nuevas, puedo usar jsdom en Node.js y obtener la misma configuración y la misma velocidad.

Pero jsdom está incompleto, y muchas veces quiero usar funciones básicas de Windows 8 como la biblioteca base de WinJS (por ejemplo, WinJS.Promise) o las enumeraciones Windows.*. E idealmente debería probar en el mismo motor JS y entorno DOM ya que mi aplicación se ejecutará realmente.

Por lo tanto, idealmente necesito un corredor de prueba: un contenedor ligero Windows 8 HTML5 que pueda ejecutar algunas pruebas unitarias con un DOM real y acceso a las API WinJS y Windows Runtime. Para la integración en el proceso de compilación, también necesito la capacidad de informar los resultados a la línea de comando (stdout, stderr) y cambiar el código de retorno de mi examinador en función del éxito o el fracaso. Y debe ser completamente automático, ejecutable en segundo plano, y muy rápido (menos de 10 segundos).

Sé que hay herramientas como esta para WebKit, p. Ej. PhantomJS. ¿Existe algo así para el entorno de Windows Runtime HTML5? Si no, ¿qué API debería buscar para construir algo así?

Respuesta

10

Actualmente no hay una forma de ejecutar un conjunto de pruebas de Win8/WinJS de una manera sin cabeza. El tiempo de ejecución requerido para las aplicaciones WinJS no se puede mantener por sí solo, sin ejecutar una aplicación WinJS completa.

La mejor manera de ejecutar pruebas, IME, es crear un proyecto WinJS separado en su solución para ejecutar sus pruebas.

Christopher bennage tiene un blog que describe la configuración básica, aquí: http://dev.bennage.com/blog/2012/08/15/unit-testing-winjs/

Y tengo algunas entradas del blog que la cabeza un poco más abajo de la trayectoria:

http://lostechies.com/derickbailey/category/winjs/

http://lostechies.com/derickbailey/2012/08/17/asynchronous-unit-tests-with-mocha-promises-and-winjs/

http://lostechies.com/derickbailey/2012/08/21/a-winjs-specrunner-automating-script-tag-insertion-for-unit-tests/

Si no me gusta la idea de ejecutar un proyecto separado para tus pruebas, o si quieres QUnit en lugar de Jasmine o Mocha, echa un vistazo a QUnit-Metro: http://qunitmetro.github.com/QUnitMetro/ - se ejecuta en el proyecto con tu aplicación real, y te da un menú contextual en modo de desarrollo para ejecutar las pruebas de la página en la que te encuentras.

No soy fan de QUnit o de cómo funciona QUnit-Metro en la página. Pero puede encontrarlo adecuado si no le gusta un proyecto separado.

Espero que ayude.

Cuestiones relacionadas