Tengo algunos proyectos que estoy tratando de construir con Xcode 6 Beta 2. Todos los proyectos tienen algún tipo de biblioteca que usa XCTest (Kiwi / XCTest y Specta) que no se compilan en Xcode 6 porque XCTest / XCTest.h no puede ser encontrado.
fatal error: 'XCTest/XCTest.h' file not found
#import <XCTest/XCTest.h>
Me di cuenta de que XCTest.framework ya no está en la lista de la fase de compilación de "Bibliotecas de enlaces con binarios", pero eso está bien porque cuando creo un nuevo proyecto con Xcode 6, parece que la biblioteca está vinculada automáticamente.
Quizás de cierta relevancia, todas mis dependencias que necesitan XCTest se incorporan a través de Cocoapods.
¿Hay algo que desconozco que necesito actualizar con mi proyecto?
Estaba moviendo archivos en un proyecto. Todo lo que tiene que hacer es seleccionar sus archivos de prueba,
xxxTests.m
etc. yfile inspector
seleccionartarget
comotest
destino normal y no como destino.fuente
Me di cuenta de que XCTest está disponible solo para un objetivo de prueba (en Xcode 6). Si está utilizando XCTest para cualquier otro objetivo (por cualquier motivo), verá el
XCTest.h not found
error.fuente
Este error aparece cuando ha agregado un archivo en el que se utiliza XCTest fuera de un objetivo de prueba. Para solucionar esto en AppCode, puede hacer clic con el botón derecho en cualquier archivo sospechoso y seleccionar 'Administrar objetivos' y luego asegurarse de que solo esté marcado el objetivo de prueba.
fuente
@squarefrog tiene la respuesta correcta, pero tendrás que seguir haciéndolo manualmente cada vez que actualices tus pods :(
Si agrega esto a su archivo pod, automáticamente agregará la ruta adicional por usted. Por ejemplo, si quería añadir
$(PLATFORM_DIR)/Developer/Library/Frameworks
a laFRAMEWORK_SEARCH_PATHS
de los espectros:post_install do |installer| target = installer.project.targets.find { |t| t.to_s == "Pods-Tests-Specta" } if (target) target.build_configurations.each do |config| s = config.build_settings['FRAMEWORK_SEARCH_PATHS'] s = [ '$(inherited)' ] if s == nil; s.push('$(PLATFORM_DIR)/Developer/Library/Frameworks') config.build_settings['FRAMEWORK_SEARCH_PATHS'] = s end else puts "WARNING: Pods-Tests-Specta target not found" end end
fuente
"Pods-Tests-Specta"
para que coincida con la configuración de su proyecto, o simplemente use el ciclo que @squarefrog sugirió para iterar sobre cada objetivo.installer.project.targets.each do |target
para recorrer todos los objetivos y aplicar el cambio.Me he enfrentado al mismo problema después de un tiempo, importé el marco XCTest de las fases de compilación y resolví el problema.
Fases de construcción-> XCTest.Framework> limpiar y ejecutar. Espero que sea de ayuda para alguien ...
para su referencia ... Importar XCTest en un proyecto existente
fuente
En el momento de escribir este artículo, la última versión de Cocoapods (0.33.1) no tiene una solución para el problema.
Pero la versión de vanguardia sí.
Siga esta guía para configurar la última versión de Cocoapods desde la fuente. Llamo al mío
pod-dev
(cubierto en la guía) para distinguirlo de la versión de pods instalada con gemas.El beneficio de este enfoque es que no necesita secuencias de comandos adicionales en su Podfile. Solo debes acordarte de hacer un en
pod-dev install
lugar de lo habitualpod install
.fuente
La mejor manera de tener un XCTest es agregarlo desde Test Nagigator (quinto ícono en el panel izquierdo).
Actuando así, el nuevo archivo de prueba xx.m no apunta (en el panel derecho) a una aplicación (en el panel izquierdo> Target, Wrapper Extension: app), sino a un paquete (Wrapper Extension: xctest)
'XCTest/XCTest.h' file not found
, es porque su archivo tenía que apuntar a una aplicación.fuente
Esta es la solución más fácil que he encontrado. No es necesario realizar cambios en el proyecto. Y este cambio persistirá hasta su próxima actualización de Xcode:
cd /Applications/Xcode6-Beta7.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.0.sdk/Developer/Library/Frameworks ln -s ../../../../../Library/Frameworks/XCTest.framework
fuente
En un proyecto sin Cocoapods (por lo que no respondimos directamente a la pregunta del OP pero tal vez sea útil para mí o para otros en el futuro), tuvimos el mismo problema. Se resolvió reemplazando nuestros elementos OCTest anteriores con XCTest. Por ejemplo, un archivo MyApp.xcodeproj / project.pbxproj tiene esta diferencia (abreviada);
- path = MyAppUnitTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; + path = MyAppUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
fuente