Quiero escribir una prueba unitaria de solo la parte de la GUI de mi aplicación Cocoa.¿Cómo puedo escribir una prueba de unidad automática de una GUI en Xcode?
En la prueba de la unidad de libro de texto, hay un marco de prueba y un caso de prueba que llama a la unidad bajo prueba. Todo el código debajo de esa unidad es burlado. Entonces, tanto la entrada como la salida son controladas y monitoreadas; solo se prueba el código en la unidad bajo prueba.
Quiero hacer lo mismo en la unidad bajo prueba es mi GUI:
1) Establecer algún tipo de marco en el que puedo escribir código que va a manipular e inspeccionar controles GUI.
2) Conecte los controles de mi GUI a los simulacros de mi código real, no a las instancias reales.
3) Ejecute la prueba, que manipula los controles y luego verifica el objeto falso para ver si se invocaron los métodos correctos con los parámetros correctos y verifica si las respuestas del objeto simulado causan los cambios correctos en los widgets .
¿Alguien que hace esto? ¿Si es así, cómo? ¿Alguna idea sobre cómo podría hacer esto?
Gracias,
Pat
(Editar) para dar un ejemplo muy específico, quiero:
1) Escribir un caso de prueba que se seleccione la opción de menú 'MiMenú' -> 'myItem '. En este caso de prueba, quiero verificar que el método [AppDelegate doMyItem] se llame exactamente una vez y que no se llame a ningún otro método en AppDelegate.
2) Genera un objeto simulado de AppDelegate. (Sé cómo hacer esto)
3) De alguna manera (moviendo manualmente aquí) enlace mi aplicación para que una instancia simulada de AppDelegate esté vinculada en lugar de la real.
4) Ejecute la prueba. Míralo fallar porque 1) aún no he creado MyMenu. 2) Todavía no he creado MyItem. 3) No he realizado el trabajo del IB para conectar MyItem a [AppDelegate doMyItem], o 4) porque todavía no he escrito el método 'doMyItem'.
5) Repare los cuatro problemas anteriores (uno a la vez si me siento realmente pedante ese día).
6) Ejecute la prueba nuevamente y obsérvela.
¿Esto aclara la pregunta?
Hola Patros, Para su segundo # 1, no acabo de ver lo que significa 'generar entrada de usuario como'. ¿Puedes darme un ejemplo? Gracias, Pat –
Simplemente significa generar los eventos de teclado y mouse que desea ver. Puede hacerlo envolviendo las clases UI nativas y secuestrando sus eventos, posiblemente accediendo a la API o escribiendo controladores personalizados. – patros