Pregunta

A los efectos de las pruebas de unidad, me gustaría crear un objetivo de proyecto de iPhone en Xcode que incluya todos los archivos de la aplicación de lanzamiento, además de algunos archivos adicionales que contienen código útil para las pruebas de unidad de UI.

Puedo hacer esto duplicando el objetivo de la aplicación original; sin embargo, el problema con esto es que cada vez que agrego un nuevo archivo fuente al objetivo de la aplicación, también necesito agregarlo al objetivo UnitTestUI. No es un gran problema, solo es un inconveniente recordar siempre agregar archivos a ambos objetivos.

¿Hay alguna manera de configurar una dependencia para que cada archivo agregado al objetivo de la aplicación original también se agregue automáticamente al objetivo de prueba de la unidad?

¿Fue útil?

Solución

En Xcode, puede crear objetivos que tengan dependencias directas entre sí. Hay varios objetivos de construcción que no son productos que pueden ayudar con esto en la categoría Otro al agregar un nuevo objetivo, dependiendo de lo simple o complicado que sea su configuración. Crear objetivos específicos para ejecutar pruebas unitarias con una dependencia directa del objetivo principal del proyecto es muy común y está documentado por Apple y en varios blogs.

Sin embargo, en su situación, es posible que tenga que hacer muchos ajustes en el nuevo objetivo de prueba de UI, pero una vez que esté configurado, será muy fácil de mantener. No sabiendo su situación exacta, es imposible darle una respuesta paso a paso, pero aquí están las pautas generales (ajustar para adaptarse a su situación):

  1. Crea la copia de tu objetivo original ya que la mayoría de tus configuraciones serán las mismas.
  2. Seleccione su nuevo objetivo y abra el inspector (& # 8984; I)
  3. En Dependencias directas , haga clic en el botón + y seleccione su objetivo principal.
  4. Configure el nuevo objetivo como desee, con documentación / fuente / reglas adicionales o lo que sea.

Si prefiere arrastrar y soltar cosas, también puede arrastrar su objetivo original (desde debajo del triángulo de información Objetivos ) a su nuevo objetivo y configurará automáticamente la dependencia.

Ahora, seleccione su objetivo de prueba como el objetivo activo y siempre se construirá con esas reglas. Además, si agrega / cambia el origen en el objetivo principal, se reconstruirá correctamente al crear su objetivo de prueba ... no es necesario recordar agregar un archivo de origen al objetivo de prueba también. Sugiero tomarse un tiempo para leer los diversos documentos de Xcode y jugar con muchas de las plantillas de destino disponibles ... a largo plazo, realmente ayuda a que el uso del producto sea mucho más eficiente. Hay muchas cosas ingeniosas que se pueden hacer con bastante facilidad en Xcode si sabes cómo hacerlo, incluso con proyectos muy grandes o complejos.

Otros consejos

No, no hay. ¿Hay alguna razón particular por la que quiera que cada archivo en su objetivo de prueba de unidad? Esto incluiría main.m y todas las clases que no esté probando (como quizás sus clases de vista). De hecho, si main.m está incluido en su prueba de unidad, ¿cómo se ejecutaría correctamente su prueba de unidad?

Resolví el problema construyendo la mayor parte de mi aplicación como biblioteca estática, que está vinculada a los objetivos de prueba de la aplicación y la unidad.

Los objetivos de mi proyecto tienen el siguiente aspecto:

  • libMyApp
    • compilar archivos .m
  • MyApp.app
    • libMyApp (dependencia)
    • Enlace con la biblioteca: libMyApp.a
  • UITest.app
    • libMyApp (dependencia)
    • Enlace con la biblioteca: libMyApp.a

De esta manera puedo agregar archivos .m solo a " libMyApp " apunta y tenlos disponibles tanto en la aplicación como en las pruebas, y ni siquiera tienen que ser recompilados.

El único problema es que la biblioteca estática no parece admitir las categorías de Objective-C, por lo que todavía tengo que agregarlas a cada objetivo por separado.

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