2010-09-30 23 views
10

Me tomé el tiempo para configurar algunas pruebas de unidad y configurar los objetivos en XCode, etc., y son bastante útiles para algunas clases. Sin embargo:Pruebas de unidades es maravilloso, pero

Quiero probar piezas de IU pequeñas para las cuales I no desea iniciar toda la aplicación. No hay concepto de aprobado/reprobado: necesito "ver" las piezas, y puedo hacer instancias ficticias de todas las clases relevantes para hacer esto. Mi pregunta es: ¿cómo puedo configurar esto en XCode?

Me doy cuenta de que podría usar otro proyecto XCode para cada clase (o grupos de clases), pero eso parece un poco engorroso. ¿Otro objetivo para cada uno?

Respuesta

5

Bueno, no se puede llamar para mostrar una parte de alguna GUI, incluso si esa GUI es parte de una aplicación grande. Lo que puede hacer aquí es crear un objetivo ejecutable por separado y escribir una pequeña herramienta que reutilice los componentes de la GUI de su aplicación y los muestre basándose en los parámetros de entrada. Esto eliminará la necesidad de muchos objetivos diferentes.

Si aún insiste en usar pruebas unitarias, puede mostrar su GUI durante un período de tiempo, por ejemplo, 10 segundos. Por lo tanto, el caso de prueba se ejecutará hasta que la GUI se cierre o transcurra el tiempo de espera y cada prueba demorará hasta N segundos en ejecutarse.

+0

Gracias, apuntó que no es "prueba". Entonces, ¿estos son nuevos objetivos en el mismo proyecto XCode, o en uno diferente? –

+0

@Yar: es más como una cuestión de preferencia personal. Mantenerlo en el mismo proyecto es más conveniente para mí. –

2

Esta es una buena pregunta. Creo que en realidad no desea usar pruebas unitarias para esas 'confirmaciones visuales'. Personalmente, suelo escribir pequeñas aplicaciones de prueba para realizar este tipo de prueba o desarrollo. No me gustan los objetivos separados en el mismo proyecto, por lo que generalmente solo creo un proyecto de prueba junto al original y luego hago referencia a esas clases y recursos usando rutas relativas. Menos desorden. Y es realmente agradable poder probar elementos de interfaz de usuario más complejos en su propio entorno de prueba.

+0

Interesante ... Estaba pensando en proyectos separados de XCode, solo quería asegurarme de estar cuerdo :) –

2

Me gustaría tener un enfoque de dos niveles a la interfaz de usuario "prueba de la unidad":

  1. unque Cacao/Cocoa Touch son aún más cerca del modelo-vista-controlador que el paradigma Modelo-Vista-ViewModel, se puede obtener gran parte de la ventaja de la capacidad de prueba al dividir su "Vista" en una "vista modelo" y una "presentadora" (tenga en cuenta que esto es algo así como el par NSView/NSCell; los ingenieros de Cocoa lo tuvieron hace mucho tiempo)) Si la vista es una capa de presentación simple, entonces puede probar el comportamiento de la vista por unidad probando el "modelo de vista".

  2. Para probar el diseño/representación de sus vistas, tendrá que hacer pruebas en humanos o realizar pruebas basadas en pixeles. Google's Toolbox for Mac tiene varias herramientas para hacer una comparación píxel por píxel de NSViews, CALayers, UIViews, etc. escritos. He escrito tool para el proyecto Core Plot para hacer frente a las fallas de prueba y fusionar los archivos de referencia en la prueba unitaria paquete poco más fácil.

+0

http://developer.apple.com/tools/unittest.html –

12

Yo sé que usted está buscando un acercamiento a componentes de interfaz de pruebas que no requieren una aplicación completamente funcional, pero me he quedado impresionado con lo que el nuevo instrumento de UI Automation introducido en IOS 4.0 que permite hacer.

Este instrumento le permite usar scripts de Javascript para probar interactivamente la interfaz de su aplicación, y lo hace de una forma que no requiere la comprobación de valores de píxeles o posiciones exactos en una pantalla. Utiliza los ganchos de accesibilidad incorporados en el sistema para VoiceOver para identificar e interactuar con los componentes.

Usando este instrumento, he podido guiar pruebas que ejercitan completamente mi aplicación mientras el usuario interactúa con ella, así como también aquellas que trabajan en áreas particulares y buscan sutiles acumulaciones de memoria.

La documentación de esta parte de Instruments es un poco escasa, pero recientemente enseñé una clase que cubre el tema para el cual el video es available on iTunes U gratis (busque la clase Testing en el semestre de otoño). Mi course notes (en formato VoodooPad) cubre esto también. También recomiendo ver la sesión 306 de WWDC 2010 video - "Automatización de pruebas de interfaz de usuario con instrumentos".

+0

A veces me pregunto por qué hago tantas preguntas sobre SO, pero de vez en cuando recibo una respuesta como esta que abre una puerta que no hice. incluso lo sé. Gracias por esto. –

+0

+1. ¡Esta es una información increíble! –

Cuestiones relacionadas