La IU de conducción de prueba es problemática porque a menudo no sabe lo que quiere en la pantalla hasta que lo ve en la pantalla. Por esa razón, el desarrollo de la GUI tiende a ser masivamente iterativo y, por lo tanto, muy difícil de manejar con las pruebas.
Esto no significa que simplemente abandonemos TDD para GUI. Más bien, sacamos la mayor cantidad de código posible de la GUI, dejando solo un simple código de cableado. Ese cableado nos permite hacer los cambios masivos e iterativos que necesitamos, sin afectar la esencia del problema.
Esta técnica probablemente fue mejor descrita por Michael Feathers hace algunos años en un artículo titulado "The Humble Dialog Box". También es la idea fundamental detrás del patrón Model-View-Presenter que causó tal revuelo hace cuatro años; y ahora se ha dividido en los patrones de Vista pasiva y Controlador de supervisión. El enlace del artículo en esta pregunta aprovecha estas ideas, pero en una prueba más que en una prueba.
La idea es probar todo excepto la vista. De hecho, ni siquiera necesitamos escribir la vista durante mucho tiempo. De hecho, la Vista es tan absurdamente simple que probablemente no necesita ningún tipo de pruebas unitarias. O si lo hace, de hecho pueden escribirse al final.
Para probar el Controlador de supervisión, simplemente asegúrese de entender cómo se presentarán los datos en la pantalla. No necesita saber dónde están los datos, ni cuál es la fuente, ni qué color es, ni ninguno de los otros problemas cosméticos que causan la iteración masiva de las GUI. Por el contrario, usted sabe que un elemento de datos será algún tipo de campo de texto. Otro será un menú, otro será un botón o una casilla de verificación. Y luego se asegura de que la Vista pueda hacer todas las preguntas que necesita para obtener estos elementos correctamente.
Por ejemplo, el cuadro de texto puede tener un valor predeterminado. The View debería poder solicitarlo. El menú puede tener algunos elementos en gris. The View debería poder solicitar esta información. Las preguntas que se hacen en la vista tienen que ver con la presentación y carecen de reglas comerciales.
De la misma manera, la vista le dirá al Controlador de Supervisión cuando algo cambie. El controlador modificará los datos de forma adecuada, incluido cualquier tipo de validación y recuperación de errores, y luego la vista puede preguntar cómo deben presentarse esos datos.
Todo esto puede probarse porque está totalmente desacoplado de la pantalla visual. Se trata de cómo se manipulan y presentan los datos, y no acerca de cómo se ve. Por lo tanto, no es necesario que se repita de forma masiva.