Xcode 7: falló la generación de datos de cobertura de código

Cuando ejecuto mis testings obtengo un error:

Error en la generación de datos de cobertura de código.
No se pueden recuperar los files de datos de perfil de 'UIDevice'.

introduzca la descripción de la imagen aquí

En la console se imprimió una advertencia:

Tiempo muerto esperando 120 segundos para que el simulador arranque, el estado actual es 1.

¿Cual es la razon?

Si está integrando su proyecto con un marco dynamic de terceros, es posible que deba agregar una ruta en la configuration de compilation. Busque -> Configuración de compilation -> "Rutas de búsqueda de ruta de ejecución" y asegúrese de que incluye la ruta al marco.

Solo estaba viendo este problema yo mismo después de configurar mi proyecto para usar un marco en el que mi equipo ha estado trabajando. Después de actualizar esta configuration específica, el problema desapareció. En mi caso, la ruta era idéntica a la que ya tenía que establecer para la configuration "Trayectorias de búsqueda del Marco".

Si está utilizando pods de cocoa, consulte este tema en el repository Cocoapods: https://github.com/CocoaPods/CocoaPods/issues/5385#issuecomment-226269847

Esto solucionó mi problema:

Copiar respuesta @dfleming:

Por alguna razón, parece que CocoaPods no está agregando la fase de compilation "[CP] Embed Pods Frameworks" al objective de las testings de interfaz de usuario al generar el espacio de trabajo del proyecto.

Agregué esto manualmente y las testings de interfaz de usuario se pudieron volver a ejecutar.

Esta fase de compilation debe ejecutar el siguiente script: (Reemplace {YourProject} con el nombre de su proyecto)

"${SRCROOT}/Pods/Target Support Files/Pods-{YourProject}UITests/Pods-{YourProject}UITests-frameworks.sh"

Solucioné este problema, al igual que resuelvo la mayoría de los problemas de XCode:

  1. borre sus files de proyectos en su DerivedData ( Xcode>Preferences>Locations>DerivedData→ para saltar allí en el buscador)
  2. Product>Clean
  3. (mantenga pulsado el button alt) Product>Clean Build Folder
  4. Salga de XCode
  5. Reiniciar XCode
  6. Eliminar tu aplicación de tu dispositivo / simulador

Inténtalo de nuevo. En caso de que aún no funcione, use otro simulador / dispositivo para algunas carreras. Tarde o temprano, volverá a funcionar en el original.

Experimenté exactamente el mismo error y finalmente lo puse en funcionamiento, estos son los pasos que tomé.

  1. Intenté reiniciar Xcode y el simulador, después de limpiar y eliminar la aplicación, que nunca funcionó.

  2. Luego reinicia el Mac como se sugirió, pero aún así no funcionó.

  3. Luego elegí un nuevo dispositivo para probar en el simulador, estaba usando 5s y cambié a 6, y eso funcionó.

Curiosamente, cuando me cambié al simulador de iPhone 6, mostró el logotipo de Apple con una barra de carga, antes de ejecutar la aplicación y trabajar.

Al volver al simulador de 5s, hizo exactamente lo mismo, con la barra de carga de Apple, que no había hecho antes, y luego funcionó el 5s.

Por lo tanto, parece ser un problema de simulador y cambiar a otro dispositivo funcionó. Restablecer el contenido y la configuration puede ser la solución para un dispositivo que no funciona.

Cocoapods link_with method puede causar este problema!

Obtuve exactamente el mismo error en xcode 7.2: ningún número de simuladores o reinicios del dispositivo parecía aclararlo. Después de rebuild completamente los objectives de ITUest aunque las cosas funcionaron bien. Después de pasar mucho time en un enorme git diff del file .pbxproj , encontré una solución para mi proyecto. No estoy seguro si aborda la causa raíz para todos los que están viendo este error, pero definitivamente me borra las cosas.

A partir de la información del proyecto debajo del "objective de deployment", "Configuraciones" mostrará una list de todas las configuraciones posibles para su aplicación. Expanda la configuration que está intentando ejecutar y debería ver una list de todos sus objectives. En mi caso, los cocoapods habían agregado automáticamente una configuration base para el objective de ITUest:

introduzca la descripción de la imagen aquí

Establezca esta none en none en el menu desplegable.
A continuación, en el menu de la izquierda, select su objective UITest y luego las build phases Deberá eliminar los check pods manifest.lock link binary with libraries check pods manifest.lock link binary with libraries emebd pods frameworks y copy pods resources .

Finalmente, vaya a su file de pod y compruebe cualquier mención de su objective o objectives de UITest. En mi caso, había estado especificando en la parte superior de mi podfile:

 platform :ios, '8.4' use_frameworks! link_with 'My App', 'My UITesting Target' pod 'A Pod', '~> 1.0' 

En cambio, el podfile debe enumerar dependencies específicas para cada objective:

 platform :ios, '8.4' use_frameworks! target 'My App', :exclusive => true do pod 'A Pod I want to use in my app', '~> 1.0' end 

¡Suponiendo que no estuvieras usando ningún module en tus ITUests, el objective debería volver a comstackrse sin errores y se ejecutarán las testings!

Mi entendimiento de la raíz de este problema es que cada objective de UITest crea dos packages separados, uno para la aplicación y otro para el controller ITUest. Desafortunadamente cocoapods link_with logic modifica todos los objectives especificados para esperar los pods.framework en su package. Los scripts de fase de compilation agregan el marco al package de aplicaciones, pero no al package de controlleres de ITUest, por lo que cuando usted lanza sus testings parece que faltan los frameworks de controller de UITest y xcode anula la installation.

Si estaba utilizando pods en su UITests, debería poder especificarlos de la misma manera:

 target 'My UITesting Target', :exclusive => true do pod 'Another Pod I want only for UITesting', '~> 1.0' end 

Y cuando ejecutas pod install todo debe vincular correctamente.

Una de las razones por las que esto puede suceder es si la aplicación host que el objective de testing está probando no está vinculada a las dependencies correctas. Por ejemplo, si está probando un marco, asegúrese de que la aplicación principal esté vinculada a esos frameworks y también esté incrustada. introduzca la descripción de la imagen aquí

Este problema también puede aparecer cuando usa Cocoapods con un marco en el que faltan algunas dependencies. Por ejemplo, si está utilizando Framework A , y este marco depende del Marco B, pero en el Podspec Framework A la dependencia no se declara.

Mi problema fue causado por una versión de implementación incorrecta del objective unitario. La versión de implementación de la aplicación probada fue 7.0, pero la unit testing no se configuró correctamente de forma automática. Se configuró en 10.0, mientras que la versión de mi simulador fue 8.4. Cambie la versión de implementación del destino UT a 8.0 en la configuration de compilation y todos los problemas desaparecieron.

En mi caso, había agregado files Swift a un marco que era (hasta entonces) puramente Objective-C. El package de testing no tenía ningún código Swift.

Una vez que agregué un file Swift al package de testing, Xcode actualizó automáticamente algunas configuraciones del proyecto y el error desapareció.

Debe mantener el file Swift en el package de testing, aunque no contenga ningún código. O bien Xcode o Cocoapods evidentemente usan la existencia de files Swift en el package de testing para determinar si ejecutar las testings en "modo rápido".

Intenté un montón de estas soluciones sin suerte. Apagué la opción Cobertura de código en la sección Prueba de mi esquema, que suprimió el error, pero las Pruebas no se ejecutaron. Entonces noté bastante cosas en la console de NSLog. En algún lugar, mencionó la reference a un marco que ya no usaba y que intentaba cargar.

Busqué en la aplicación, y Build Settings -> Other Linker Flags intentaba cargar el marco que ya no estaba allí.

Eliminé: -framework 3rd_party_libname

Luego las testings funcionaron nuevamente. Esto era confuso, pero por favor verifique los posts de NSLog. Estaba usando XCode 8.3

La causa raíz es probablemente la falla del simulador. Los problemas con el simulador son comunes, especialmente en el primer lanzamiento.

Si el problema se produce incluso después de iniciar y conectar con éxito el simulador, publique los detalles del error.

Para que el simulador se inicie, a menudo tengo que cancelar la primera ejecución (después de iniciar Xcode limpiamente), e intentar volver a ejecutar algunas veces.

Si esto es repetible, sucede en varios proyectos y persiste después del relanzamiento y la limpieza de los proyectos, considere enviar un defecto a Apple si la comunidad Stack Overflow no puede ayudar.

Uno o más de sus simuladores se ha quedado atascado. Lo único que siempre funciona para solucionarlo es restablecer el contenido y la configuration del simulador desde el menu Simulador.

Restablecer contenido y configuración ...

Nota: esto eliminará todos los datos de la aplicación del simulador.

Tuve el mismo problema, pero se debía a tener un objective de testing y cambiar el nombre del objective de la aplicación. Asegúrese de tener un set de aplicaciones de host válido.

  • Elija el objective de testing en la página del proyecto
  • Debajo de la pestaña General debe haber un cuadro de selección de Aplicación de Host
  • Elige el objective contra el que quieres probar

Después de mucho time tratando de resolver esto, resultó que tenía que crear un nuevo objective de testing. Luego, después de reiniciar el dispositivo, el problema ya no volvió a aparecer.

También me enfrenté al mismo problema:

Intenté seguir cosas para diferentes proyectos:

1.Para el proyecto donde tuve algunos frameworks de terceros, el problema era que el package de testing no puede encontrar el marco en time de ejecución. Para las configuraciones de compilation de Pathpath Search Paths de este objective de testing de actualización, agregue $(PROJECT_DIR)/Frameworks (suponiendo que mantenga sus frameworks en esa location). Solucionó mi problema para este proyecto Puede searchlo en la siguiente location:

 Project file -> Test target -> Build Settings -> Runpath Search Paths 
  1. En otro espacio de trabajo, cuando cambié mi dispositivo de testing a otro simulador o cambié el dispositivo por sí mismo. Eso ayudo.

  2. Reinicia el xcode o tu sistema Mac.

espero que te ayude

Los usuarios de Carthage:

Esto me pasó después de agregar un nuevo marco a mi Cartfile.

carthage update pero olvidé arrastrar el file .framework del Finder a la sección de Binaries embeddeds del objective de mi aplicación.

Una vez que hice eso, el problema desapareció.

(Tenga en count que este es un caso específico del problema general mencionado por @Mustafa arriba).

Tenía este problema en Xcode 8.3 en Sierra 10.12.4

Abrí la aplicación Keychain Access en mi Mac

Después de unos segundos, obtuve varias windows emergentes del sistema que pedían mi contraseña, para otorgar permissions a los artículos de Keychain.

Ingresé mi contraseña en las windows emergentes, y luego mis testings comenzaron a funcionar.

Pasos que funcionaron en mi caso Eliminar el esquema y hacer clic en Administrar esquema-> Generar esquema automático resolvió el problema en mi caso.

El problema fue causado instalando el certificate en el simulador y en el llavero