2012-05-16 15 views
6

Tengo un espacio de trabajo XCode con un proyecto de interfaz de usuario (UI) y un proyecto de lógica central (Core). Quiero pruebas de unidades OCUnit en el proyecto de IU, así que he agregado un nuevo objetivo para las pruebas, como se hace comúnmente.Prueba de unidad con una biblioteca estática

Puedo ejecutar pruebas muy bien hasta que coloque las sentencias de importación para las clases en el destino principal de la IU que a su vez hace referencia al proyecto Core.

El error que recibo es "Problema léxico o de preprocesador 'archivo xxx.h' no encontrado". No entiendo este mensaje cuando construyo el objetivo principal de la interfaz de usuario directamente.

Es como si el objetivo principal de la IU conociera a Core cuando está construido, pero cuando se hace referencia desde el objetivo de la prueba, parece que no sabe nada sobre Core.

Tomé el paso de agregar una referencia al proyecto principal utilizando "Enlaces binarios con bibliotecas" El elemento de la lista permanece en rojo. ¿Una pista? Tal vez, pero la referencia roja en la lista de enlaces no evita que el objetivo de la interfaz de usuario se genere y use clases principales. También hice que el objetivo principal fuera una dependencia del objetivo de prueba.

Respuesta

9

Asegúrese de que usted echa un vistazo al código de ejemplo de Apple "pruebas unitarias": https://developer.apple.com/library/ios/#samplecode/UnitTests/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011742

Asegúrese de que su proyecto de biblioteca se establece como una dependencia en las fases de construcción de su destino de prueba OCUnit, y está vinculado como una biblioteca.

Abra su proyecto en Xcode. En el menú Archivo, vaya a Configuración del proyecto ... (o Configuración del área de trabajo ... si está utilizando un área de trabajo). Haga clic en Avanzado ... y asegúrese de que Único esté marcado. Limpiar y reconstruir

Revise su BUILD_PRODUCTS_DIR para ver si los encabezados de su biblioteca aparecen allí. Si no lo hacen, primero compruebe las fases de compilación en su biblioteca objetivo para asegurarse de que los encabezados que necesita están en la sección pública (la sección Proyecto también puede funcionar, pero pruebe pública y ver si eso resuelve su problema).

Eso cubre los problemas más comunes que las personas parecen toparse en su situación. En caso de duda, verifique la configuración del objetivo en la muestra UnitTests contra la suya. ¡Buena suerte!

0

En su objetivo de prueba, vaya a Configuración de compilación. Agregue la ruta a sus encabezados de biblioteca estática a las rutas de búsqueda de encabezado.

2

Además de la respuesta de Jon Reid, tuve que hacer lo siguiente también: En su objetivo de prueba, vaya a Configuración de compilación. Establezca "Buscar rutas de usuario siempre" en YES