Pregunta

Entonces sé que las pruebas unitarias son imprescindibles.Tengo la idea de que TDD es el camino a seguir al agregar nuevos módulos.Incluso si en la práctica no lo hago.En realidad, es un poco como comentar código.

Lo real es que estoy luchando por entender cómo realizar pruebas unitarias de la interfaz de usuario y, en términos más generales, de los objetos que generan eventos:controles de usuario, operaciones de bases de datos asíncronas, etc.

Gran parte de mi código se relaciona con eventos de la interfaz de usuario que no veo cómo iniciar las pruebas unitarias.

¿Debe haber algunos manuales y documentos iniciales por ahí?¿Algunos consejos y sugerencias?

Generalmente trabajo en C# (2.0 y 3.5), pero no estoy seguro de que esto sea estrictamente relevante para la pregunta.

¿Fue útil?

Solución

Lo que hay que recordar es que las pruebas unitarias consisten en probar las unidades de código que escribe.Sus pruebas unitarias no deberían probar que hacer clic en un botón genera un evento, sino que el código que se ejecuta mediante ese evento de clic hace lo que se supone que debe hacer.

Lo que realmente desea hacer es probar que el código subyacente hace lo que debería para que las capas de la interfaz de usuario puedan ejecutar ese código con confianza.

Otros consejos

Lee esto si tienes dificultades con las pruebas de UI

Pruebe manualmente elementos de la interfaz de usuario donde el beneficio y el costo de la automatización sean mínimos.Pruebe todo lo que hay debajo de la interfaz de usuario sin piedad.Utilice Humble Dialog, MVC o variantes para mantener la lógica y la interfaz de usuario distintas y poco acopladas.

Debes separar la lógica y la presentación.Usando los patrones MVP (Modelo-Vista-Presentador)/MVC (Modelo-Vista-Controlador), puede realizar pruebas unitarias de su lógica sin depender de los eventos de la interfaz de usuario.También puedes usar Marco blanco para simular la entrada del usuario.Le recomiendo encarecidamente que visite Microsoft. Centro de desarrolladores de patrones y prácticas, eche un vistazo especialmente al bloque de aplicaciones compuestas y Prism: puede obtener mucha información sobre el diseño basado en pruebas.

Las partes de su aplicación que se comunican con el mundo exterior (es decir, interfaz de usuario, base de datos, etc.) siempre son un problema cuando se realizan pruebas unitarias.En realidad, la solución a esto no es probar esas capas, sino hacerlas lo más delgadas posible.Para la interfaz de usuario, puede usar un cuadro de diálogo humilde o una vista que no haga nada que valga la pena probar y luego poner toda la lógica en una clase de controlador o presentador.Luego puede usar un marco simulado o escribir sus propios objetos simulados para crear versiones falsas de las vistas para probar la lógica en los presentadores o el controlador.En el lado de la base de datos puedes hacer algo similar.

Probar eventos no es imposible.Por ejemplo, puede suscribir un método anónimo al evento que genera una excepción si el evento se lanza o cuenta el número de veces que se lanza el evento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top