meaning - Cuál es la mejor manera de probar el código GWT
gwt vs angular (4)
¿Cuál es la mejor manera de probar el código GWT?
GWTTestCase en modo alojado es demasiado lento y ninguno de los marcos de burla funcionan.
Actualmente estamos siguiendo MVC como se sugiere en http://robvanmaris.jteam.nl/2008/03/09/test-driven-development-for-gwt-ui-code/ y usando GWTMockUtilities desarmar () y restaurar () para simular widgets. Y no hemos descubierto una forma de probar View en GWT MVC. ¿Hay una mejor manera de probar el código GWT?
Lo que funcionó para mí:
Utilice el modelo / vista / controlador clásico (p. Ej., No hay lógica comercial en la vista o el controlador; los controladores solo traducen los eventos de visualización en llamadas de método en el modelo).
Desacople el modelo y el código de controlador de los widgets de vista de GWT y de cualquier otra clase que dependa de GWT y no pueda crearse una instancia en una JVM simple. Luego puede probarlos con el viejo JUnit.
Escriba pruebas de extremo a extremo para probar el sistema a través de la GUI para asegurarse de que los modelos y controladores estén conectados correctamente a las vistas. Descubrimos que es más rápido implementar e iniciar la aplicación y luego interactuar con ella a través de un navegador controlado desde JUnit con WebDriver que utilizar GWTTestCase.
Use JMock para probar llamadas asincrónicas como esta: http://www.jmock.org/gwt.html .
También lea en Metodologías de prueba usando Google Web Toolkit
Como alternativa, debe probar gwt-test-utils , que logra ejecutar el código del cliente GWT en una JVM independiente y proporciona alguna característica para simular cualquier cosa que desee (componente, servicios RPC, etc.)
Si está buscando probar widgets GWT de forma aislada, no hay muchas opciones. Puede usar un GWTTestCase para crear instancias de sus widgets y probarlos a través de su API, que es lo que hace Google para los widgets de GWT: Source for RadioButtonTest
Sin embargo, el mecanismo de activación de eventos no funciona en GWTTestCases, lo que significa que no puede hacer cosas como hacer clic en un botón de programación y esperar que se invoque el método de devolución de llamada onClick () en un oyente. También es difícil, si no imposible, llegar al DOM subyacente, por lo que puede no ser la mejor herramienta para probar código de emisión de HTML de bajo nivel.
Parece que estás siguiendo todos los pasos correctos; El artículo de Rob proporciona una excelente descripción de cómo escribir código comprobable usando el patrón de diseño Model-View-Presenter (MVP). Mientras más lógica mantenga fuera de la capa de vista, mejor. Cuando eso no sea posible, use una herramienta como Selenium para crear pruebas enfocadas del comportamiento de la IU dinámica.
Seguí una estrategia similar: MVP con código mínimo en los widgets. En algunos casos, escribí un código que ajustaría la clase Grid, así que pude crear una instancia de mi componente en un GWTTestCase, pasarle una Grid, invocar algunos métodos en mi componente y verificar el estado de la Grid. Escribí un artículo para Better Software sobre Test-First GWT, que puedes leer en mi blog .
Si busca probar el código que utiliza clases GWT que no son UI (como la codificación URL o los diccionarios), deberá usar GWTTestCase, o bien seguir estrategias de ajuste similares hasta que el código sea demasiado simple de romper. Luego use una prueba de integración con una herramienta como Selenium, o unas pocas GWTTestCases que solo prueban que está usando la biblioteca correctamente, como dice JB Rainsberger, "¡No prueben el marco!"