que xcode unit-testing swift cocoapods

xcode - que - Emitir pruebas y usar Cocoapods en un proyecto de Swift



cocoapods que es (3)

Además del comando link_with en mi Podfile, tuve que importar mi módulo de proyecto principal en el archivo de prueba. De esta manera, las clases y los métodos no tienen que ser públicos.

Tenga en cuenta la @testable annotation especial @testable annotation

@testable import my_tutorial_app

También mi nombre principal de proyecto tenía caracteres no alfanuméricos, tuve que reemplazarlos por guiones bajos _

Estoy escribiendo una aplicación en Swift, usando XCode 6 Beta-6. Estoy usando Cocoapods y estoy creando algunas pruebas unitarias.

El problema es este: aparentemente no es posible tener un proyecto que contenga:

1) Proyecto escrito en Swift

2) Algunas cápsulas instaladas usando cocoapods

3) Un archivo de encabezado de puente de Objective-C que importa algunos pods

4) Pruebas unitarias

Esto suena raro, pero siga mis pasos: después de ejecutar la pod install , cree el encabezado del puente Objective-C e importe un pod: todo funciona. Ahora escriba algunas pruebas: para probar sus propias clases, tiene que importar el módulo llamado "como su proyecto" (o mejor, "como el objetivo principal"): en mi proyecto "MyAwesomeApp" tengo que escribir la import MyAwesomeApp en mis archivos de prueba

Desafortunadamente, en este paso, XCode no se compilará: en mi línea import MyAwesomeApp con el error "Error al importar el encabezado de conexión" /path/to/MyAwesomeApp/MyAwesomeApp/MyAwesomeApp-Bridging-Header.h ";
y el error "xxx.h file not found" aparece en el archivo Bridging-Header, excluyendo la posibilidad de importar un pod.

Además, si no importo los pods en el archivo de puente de Obj-c, el proyecto compilará bien.

Parece que hay un conflicto al importar el encabezado de puente de Objective-C (con los archivos de Objective-C tomados de un subproyecto diferente en el espacio de trabajo) y el "módulo principal" utilizado para las pruebas.

¿Sabes si hay una solución? ¿Qué me estoy perdiendo? Gracias

NOTA: Como solución alternativa, podría importar los pods en el encabezado de puente de Objective-C y, en lugar de incluir el módulo principal en mis pruebas, agregar todas las clases que deseo probar en mi objetivo de "prueba". Esto funcionará, pero no es la solución más limpia (creo)


Si echas un vistazo a tus principales configuraciones de compilación, verás que hay una lista de directorios para las configuraciones de "Rutas de búsqueda de encabezado".

Debe copiar esos valores bajo el objetivo de la prueba o puede intentar modificar su Podfile para incluir sus objetivos principales y de prueba y volver a ejecutar la install :

platform :ios, ''7.0'' link_with ''mainapp'', ''mainappTests'' ...

También tenga en cuenta cualquier otra ruta de encabezado que pueda ser necesaria y que no esté relacionada con CocoaPods.

Y no olvide que sus clases tendrán métodos públicos donde quiera que los pruebe en unidades.

Espero que esto ayude.


Tal vez haya configurado el ajuste "Encabezado de puente de Objective-C" en el nivel del proyecto, por lo que el objetivo de "Prueba" hereda ese valor y quizás este objetivo de "Prueba" no esté vinculado con Cocoapods.

Use link_with como @sergio sugiere o establezca la configuración "Pods * .debug / release" para el objetivo "Test" en "Proyecto-> Información-> Configuración".