ios - ser - test app on iphone
XCTests que falla en un dispositivo fĂsico: "Cancelando pruebas debido a un tiempo de espera..." (5)
Los XCTests están fallando con el mensaje: *** Canceling tests due to timeout in Waiting for test process to check in...
Esto acaba de comenzar a aparecer en los últimos días. Estoy usando Xcode 7.3.1, con iOS 9.3.2 ejecutándose en un iPhone 6. Mi aplicación está escrita principalmente en Swift.
He visto algunos posts similares:
- No se pueden ejecutar XCTests en dispositivos iOS
- Las pruebas de iOS no se ejecutarán en el simulador cuando se use Jenkins a través de JNLP
Esos otros mensajes hablan de este problema como surgiendo con la firma de código. La firma de código no parece ser mi problema. He consultado la utilidad KeyChain Access y no veo ningún certificado caducado relevante. Además, lo que hasta ahora está (muy temporalmente) solucionando mi problema es reiniciar mi iPhone. (Desafortunadamente, esa solución no dura mucho, tal vez algunas ejecuciones de XCtest y el problema vuelva a surgir). No estoy corriendo Jenkins, solo XCTests.
He intentado reiniciar Xcode y eliminar todos los archivos / carpetas de la carpeta DerivedData, pero ninguno de estos resuelve el problema.
Acabo de instalar Xcode8 (primera versión beta). Pero aparte de haberlo lanzado una o dos veces, generalmente no lo uso. Parece una extraña coincidencia que este problema surja después de haberlo instalado.
Actualización 6/25/16
He reducido este problema un poco. Varios otros síntomas aparecen al mismo tiempo que el problema del tiempo de espera:
- El registro de la consola directamente desde
print
declaraciones deprint
en los archivos XCTest se detiene. - El temporizador falla, esta es realmente la raíz del problema. Mis pruebas implican primero esperar alguna interacción del servidor, lo que ocurre. Pero la espera utiliza un NSTimer que nunca ejecuta su devolución de llamada.
- Los puntos de interrupción dejan de funcionar.
Parece que vale la pena tener en cuenta que estoy ejecutando estos XCTest manualmente. Es decir, estoy ejecutando cada prueba por separado, por lo que cada prueba implica una compilación.
Además, hasta ahora he probado lo siguiente:
- Reiniciando Xcode (no ayuda)
- Reiniciando Mac OS X (no ayuda)
- Eliminar los contenidos de los datos derivados (no ayuda)
- Reiniciar iPhone-- ayuda, pero solo de nuevo permite que se ejecuten algunas pruebas de Xcode.
- Intentó ejecutarse con wifi en comparación con un punto de acceso en iPhone (no hay problemas para solucionarlo)
- TODO: Correr con simulador
- ¿Podría ser este un problema de cable o puerto USB? Cambiar el cable que conecta el dispositivo no ayuda.
- Eliminar la aplicación y reinstalar / reconstruir no ayuda.
- Probado en un hardware diferente (iPad Air con iOS 9.3.2). Los mismos problemas.
Mi configuración es: iOS 9.3.2, Xcode 7.3.1, Mac OS X 10.11.5 (15F34).
El problema radica en el hecho (o más bien: un error grave en xcodebuild) de que el tiempo de espera para conectarse al servidor XCTest comienza en el momento en que se emite el comando xcodebuild. El tiempo de espera es de 120 segundos, por lo que si su compilación + inicio del simulador demora más de 2 minutos, xcodebuild dará este error de "Cancelación de pruebas debido al tiempo de espera".
La solución es dividir la compilación en dos comandos. Uno para construir y otro para ejecutar las pruebas:
> xcodebuild clean build build-for-testing <other options>
> xcodebuild test-without-building <other options>
Esto resolverá el problema del tiempo de espera, porque la acción de prueba sin creación no tiene que compilarse primero.
Este es un problema causado por un bucle infinito en su código. Tuve el mismo error, pero eliminé el código que causó el problema y funcionó bien. xcode no te da mucha información para trabajar. Algunas causas pueden ser una var global y un singleton apuntando entre sí
Si bien creo que la respuesta de Werner Altewischer es correcta, siempre es importante observar el error más temprano que está viendo, no el último.
En mi caso, estaba viendo el error que se publicó en la pregunta, pero antes había muchos errores de compilación.
ex.
Testing failed:
''...'' is not a postfix unary operator
''count'' is unavailable: there is no universally good answer, see the documentation comment for discussion
Cannot convert value of type ''Int'' to expected argument type ''IntMax'' (aka ''Int64'')
Cannot convert value of type ''Int8'' to expected argument type ''IntMax'' (aka ''Int64'')
Cannot convert value of type ''Int16'' to expected argument type ''IntMax'' (aka ''Int64'')
Cannot convert value of type ''Int32'' to expected argument type ''IntMax'' (aka ''Int64'')
Cannot convert value of type ''UInt'' to expected argument type ''UIntMax'' (aka ''UInt64'')
Cannot convert value of type ''UInt8'' to expected argument type ''UIntMax'' (aka ''UInt64'')
Cannot convert value of type ''UInt16'' to expected argument type ''UIntMax'' (aka ''UInt64'')
Cannot convert value of type ''UInt32'' to expected argument type ''UIntMax'' (aka ''UInt64'')
Finalmente me di cuenta de que actualicé mi entorno sin actualizar mi versión de Xcode específica en TravisCI.
Cambiando...
osx_image: xcode8.3
a...
osx_image: xcode9.3
En mi .travis.yml
arreglé esto para mí.
Tengo el mismo problema contigo. He intentado todo lo posible como tú. Y aún no encuentra la causa raíz para resolverlo. El problema es similar al de Xcode8, pero no puedo encontrar ningún registro de dispositivo o mensaje de error para probarlo.
actualización: My Devices iPhone6s (9.3.1 -> 9.3.2) iPhone5 (9.3.1 -> 9.3.2) ambos aparecen en este problema Xcode Versión 7.3.1 (7D1014) Xcode-beta Versión 8.0 (8S128D)
Tuve el mismo problema con 7.3.1, iPad 9.3.3, Mac 10.11.6
Los perfiles de aprovisionamiento están bien y no hay problemas en ese frente.
Al tomar sugerencias de los pasos mencionados por OP, el problema desapareció después de reiniciar el iPad y XCode dos veces (en ese orden). Después de reiniciar XCode, tuve que desconectar el iPad y volver a conectarlo.
No tuvo que borrar los Datos Derivados ni reiniciar la Mac.
Mi amigo también enfrentó problemas similares y buscó soporte técnico de Apple proporcionando un proyecto de muestra. El equipo de soporte de Apple Tech respondió pidiéndole que presentara un error.