Una de las características más importantes que publicamos con la Beta1 de Silverlight2 era la creación de una infraestructura que permitiese realizar test unitarios a nivel de API y a nivel de interfaz de usuario. Esta infraestructura tiene que ser multi navegador y multiplataforma, para poder ejecutar y comprobar test automatizados.
Además de esta infraestructura de test unitarios para Silverlight, también publicamos el código de unos 2000 test unitarios que proveen un control sobre el código de Silverlight que también publicamos con una licencia permisiva (podéis tener el control del código fuente, modificarlo, ejecutar los test unitarios para comprobar que todo sigue funcionando, y usar los controles que queráis.
Aprendiendo a usar los test unitarios de Silverlight
Jeff Wilcox (que desarrolló este framework de test) tiene un post en el que nos enseña cómo crear un proyecto de test en una solución aquí. Podéis descargaros la aplicación de chat que hicimos con expression blend para probar esto de los test. También podéis ver este vídeo en el que Jeff creó para hablar sobre este framework de test.
Como nos enseña Jeff en su post, podemos añadir un proyecto de test para Silverlight en Visual Studio que encapsula test unitarios para la aplicación en la que estamos trabajando:
Añadimos las clases de test para simular una acción en la interfaz de usuario con Silverlight (emulando clics de botones, etc):
Ahora podemos ejecutar el proyecto de test y lanzar los test que tiene para comprobar el estado de los resultados.
El framework de Jeff proporciona automáticamente unos test basados en navegador y un sistema de informes (con lo que conseguimos que estos test puedan ejecutarse en cualquier navegador/sistema operativo en el que se ejecute Silverlight:
Este framework soporta la reconfiguración de cada control después de los test (y nos evita tener que relanzar un nuevo navegador para cada caso de test – lo que lo hace realmente rápido).
Podéis lanzar cientos o miles de test automáticos en segundos:
La barra verde indica que se han pasado todos los test. Los rojos indican que ha fallado algún test y se logea el fallo y/o las excepciones que se hayan lanzado.
Resúmen
Si alguna vez habéis intentado crear una estrategia para crear test unitarios o usar TDD en aplicaciones AJAX, creo que Silverlight nos ofrece muchas opciones. Con Visual Studio podéis separar los test en un proyecto aparte en la solución, y NO necesitaréis embeber los test en la aplicación Silverlight para que se ejecuten.
Además de lo de arriba, este framework también con apis para automatizar la interfaz de usuario con Silverlight 2. Esto permite escenarios de accesibilidad (permitiendo a los lectores de pantalla trabajar con Silverlight y permitiendo que las aplicaciones Silverlight cumplan con la regla de Section 508). Estas APIs nos permitirán test de interfaces de usuario en las que podremos crear animaciones de ratón y teclado mejorando la experiencia de testeo. Si juntamos estas características podremos crear soluciones mucho más sólidas y mantenibles.
Espero que sirva.
Scott.
Traducido por: Juan María Laó Ramos.
Hola.
He leído detenidamente este post y el de Jeff Wilcox, pero tengo un problema.
Cuando crea el [TestInitialize], escribe en la última línea “this.Silverlight.TestSurface.Children.Add(_chatPage);”
La clase Silverlight pertenece a la librería System.Web.Silverlight.dll. Dicha librería no la he podido añadir a mi Silverlight Unit Test Application porque sólo puede utilizarse en un entorno ASP, que no es mi caso.
¿Alguna sugerencia?
Gracias.
LikeLike