framework - swift ios documentation
XCTest/XCTest.h no encontrado en proyectos antiguos construidos en Xcode 6 (11)
@squarefrog tiene la respuesta correcta, pero tendrás que seguir haciéndolo manualmente cada vez que actualices tus pods :(
Si agrega esto a su podfile automáticamente agregará la ruta extra para usted. Por ejemplo, si desea agregar $(PLATFORM_DIR)/Developer/Library/Frameworks
a FRAMEWORK_SEARCH_PATHS
para Specta:
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
Tengo algunos proyectos que intento construir con Xcode 6 Beta 2. Todos los proyectos tienen algún tipo de biblioteca que use XCTest (Kiwi / XCTest y Specta) que no se compila en Xcode 6 porque XCTest / XCTest.h no puede ser encontrado.
fatal error: ''XCTest/XCTest.h'' file not found
#import <XCTest/XCTest.h>
Noté que XCTest.framework ya no está en la lista de fases de compilación "Vincular bibliotecas con binarios", pero eso está bien porque cuando creo un nuevo proyecto con Xcode 6 parece que la biblioteca está vinculada automáticamente.
Tal vez de alguna relevancia, mis dependencias que necesitan XCTest son traídas a través de Cocoapods.
¿Hay algo que desconozco que necesito actualizar con mi proyecto?
Al momento de escribir, la última versión de Cocoapods (0.33.1) no tiene una solución para el problema.
Pero la versión de vanguardia lo hace.
Siga esta guía para configurar la última versión de Cocoapods desde la fuente. Llamo a mi pod-dev
(cubierto en la guía) para distinguirlo de la versión instalada de gemas de las cápsulas.
El beneficio de este enfoque es que no necesita secuencias de comandos adicionales en su Podfile. Solo tiene que recordar hacer una instalación de pod-dev install
lugar de la pod install
habitual.
En un proyecto sin Cocoapods (por lo que no responde directamente la pregunta del OP, pero tal vez sea útil para mí o para otros en el futuro), tuvimos el mismo problema. Fue resuelto reemplazando nuestros artículos anteriores de OCTest con XCTest. Por ejemplo, un archivo MyApp.xcodeproj / project.pbxproj tiene este diff (abreviado); - path = MyAppUnitTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; + path = MyAppUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
Este error aparece cuando ha agregado un archivo donde XCTest se usa 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 destinos" y luego asegurarse de que solo se marque el objetivo de la prueba.
Este es el trabajo más fácil que he encontrado. No se necesitan 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
La mejor manera de obtener un XCTest es agregarlo desde el Nagigator de prueba (5to icono en el panel izquierdo).
Actuando así, el nuevo archivo de prueba xx.m no se dirige (en el panel derecho) a una aplicación (en el panel izquierdo> Target, Wrapper Extension: aplicación), sino a un paquete (Wrapper Extension: xctest)
- el XCTest.framework permanece en rojo,
- debido a algunas modificaciones puede tener el error
''XCTest/XCTest.h'' file not found
, es porque su archivo tenía que apuntar a una aplicación.
Me di cuenta de que XCTest solo está disponible para un objetivo de prueba (en Xcode 6). Si está utilizando XCTest para cualquier otro objetivo (por el motivo que sea), verá el error XCTest.h not found
.
Me enfrenté al mismo problema después de un tiempo de haber importado el framework XCTest desde las fases de compilación y haber resuelto el problema.
Fases de compilación-> XCTest.Framework> limpiar y ejecutar. Espero que sea útil para alguien ...
para su referencia ... Importe XCTest al proyecto existente
Movía archivos en un proyecto. Todo lo que tiene que hacer es seleccionar sus archivos de prueba xxxTests.m
etc. y en file inspector
seleccionar el target
como test
y no como un objetivo regular.
agregue la ruta de búsqueda follow to framework
/Applications/Xcode6-Beta.app/Contents/Developer/Library/Frameworks
Nota: Esto puede no ser necesario para cualquier proyecto creado en Xcode 7.
CocoaPods tenía una solución para esto here y here
Para solucionar esto en cualquier dependencia de CocoaPod, debe agregar lo siguiente a FRAMEWORK_SEARCH_PATHS
en cualquier destino de Pod que requiera XCTest (por ejemplo, Kiwi, Specta, FBSnapshotTestCase, etc.).
$(PLATFORM_DIR)/Developer/Library/Frameworks
Esto le permitirá hacer referencia a XCTest en cualquier dependencia que pueda tener. Esto puede corregirse en una actualización futura de CocoaPods, o el Pod al que hace referencia, por lo que es posible que desee eliminarlo más adelante.
No es perjudicial para las versiones anteriores de Xcode, por lo que debería ser seguro de usar.