ios - guide - Errores de construcción de XCTest para el objetivo de prueba Xcode 5:
ios frameworks (11)
He configurado un proyecto XCode 5 iOS 7 para pruebas unitarias.
Por supuesto, establecer las pruebas unitarias me está llevando tanto tiempo que intento mantener la fe de que vale la pena. Luchando durante horas por este error:
ld: building for iOS Simulator, but linking against dylib built for MacOSX file
''/Applications/Xcode5-DP5.app/Contents/Developer/Library/Frameworks/XCTest.framework/XCTest''
for architecture i386
¿Alguna idea sobre cómo resolver?
Asegúrese de que la ruta del marco de trabajo de búsqueda ( FRAMEWORK_SEARCH_PATHS
) para el destino YourProjectTests
incluya la ruta $(SDKROOT)/Developer/Library/Frameworks
, y que esta esté listada antes de $(inherited)
.
En mi caso, ambos caminos estaban presentes, pero $(inherited)
fue el primero.
El crédito va a https://.com/users/181947/brian-clear en Apple Mach-O linker (id) advertencia: construir para MacOSX, pero vinculando contra dylib creado para iOS
Entonces, para mí, lo que me estaba perdiendo después de probar todo lo demás en esta publicación, fue:
Otros indicadores de enlazador:
-framework XCTest
Actualmente estoy usando Xcode 6.0 (con iOS 8 SDK), así que me sorprende que la opción "Editar> Refactorizar> Convertir a XCTest ..." no agregue esto automáticamente.
Estaba enfrentando un problema al agregar el marco sentestingkit en xcode 5. Esta configuración funcionó para resolver el problema del enlazador.
Ninguna de las respuestas anteriores funcionó para mí. Encontré una respuesta aquí en un comentario dejado por Tim Macfarlane.
Para los errores del vinculador que buscan una clase en su aplicación ... establezca la configuración de construcción "Símbolos ocultos por defecto" en "NO" en el destino de su aplicación. Esto hace que todas tus clases de aplicaciones estén disponibles para tu objetivo de prueba automáticamente ...
Entonces eso significa:
- Project Navigator> Seleccione su proyecto
- Objetivos> Seleccione su aplicación (no las pruebas)
- Configuración de compilación> Buscar "Símbolos ocultos por defecto"
- "Símbolos ocultos por defecto"> Cambie de "SÍ" a "NO"
Tiene el mismo problema después de convertir las pruebas de SenTestCase a XCTestCase. Revertir problemas solucionados de los marcos de trabajo:
"$(SDKROOT)/Developer/Library/Frameworks" (non-recursive)
"$(DEVELOPER_LIBRARY_DIR)/Frameworks" (non-recursive)
Tuve el mismo problema cuando intenté construir pruebas de unidad basadas en XCTTest con SDK anterior a la 7.0. Cuando elegí 7.0 como mi SDK base, ese tipo de error de enlace desapareció.
Tuve el mismo problema después de cambiar el nombre de mi Target y mover las cosas. Resultó que mis pruebas formaban parte de mi objetivo principal. Asegúrese de que todos sus archivos de prueba pertenecen solo a su objetivo de prueba.
Simplemente seleccione un archivo .m, asegúrese de que tiene el panel derecho abierto.
Tuve el mismo problema pero terminé con una solución ligeramente diferente.
seleccione XCTest.framework y asegúrese de que solo su carpeta de prueba esté marcada en Membresía objetivo.
Tuve el mismo problema; el problema (al menos para mí) era que la configuración de compilación FRAMEWORKS_SEARCH_PATHS
enumeraba la carpeta de marcos de SDK después de la carpeta principal de frameworks de desarrollador.
Los marcos incluidos con Xcode tienen tres compilaciones separadas: una para OS X, una para iOS (dispositivo) y una tercera para iOS Simulator. La compilación OS X se encuentra en la carpeta principal del desarrollador, y las otras dos están en sus respectivas carpetas de plataforma. El problema aquí es que si no especifica buscar las carpetas del SDK primero (que se encuentran dentro de las carpetas de la plataforma), Xcode (o más correctamente, el enlazador) encontrará primero la compilación OS X y producirá el error que ve.
La solución es simple, pon:
FRAMEWORK_SEARCH_PATHS = $(SDKROOT)/Developer/Library/Frameworks $(inherited)
en tu configuración de compilación Si está poniendo configuraciones de compilación en el archivo de proyecto (no lo recomiendo, pero esa es otra pregunta para otro día), simplemente se llama "Trayectorias de búsqueda de marco".
NOTA: A veces Xcode es un poco lento para ponerse al día; probablemente necesite eliminar su carpeta de build
(mejor que solo una limpieza) para que esto surta efecto.
Tuve este problema al agregar otro archivo para las pruebas. Si hace esto con (CMD + N) asegúrese de apuntar únicamente al paquete de prueba (es decir, ''AppNameTests'').
Supongo que solo estos paquetes .xctest tienen acceso al XCTest Framework.
Verifique las rutas de búsqueda de Framework en la configuración de destino de prueba. Estos pueden corromperse al agregar el XCTest Framework.
Agregar XCTest a uno de mis proyectos precedió una "/" a las rutas, lo que hace que no encuentren la versión correcta.