2010-09-10 4 views
7

La reciente actualización a XCode 3.2.4 y iOS SDK 4.1 hace que mis pruebas de unidad ya no funcionen con mi proyecto de iOS. El proyecto actualmente solo se ejecuta en el simulador, no en hardware real.Problema al hacer pruebas lógicas después de la actualización de XCode 3.2.4

Traté de hacer un nuevo proyecto en blanco con un caso de prueba simulado añadió que siempre pasará, pero no funciona bien, y me da este resultado:

producido un error interno al manipular la salida del comando:
- [XCBuildLogCommandInvocationSection setTestsPassedString:]: selector no reconocido enviados a instancia 0x20176e320
producido un error interno al manipular salida de comando:
- [XCBuildLogCommandInvocationSectionRecorder endMarker]: selector no reconocido enviados a instancia 0x201257de0

¿Alguien más tiene problemas con sus casos de prueba usando XCode 3.2.4 y iOS SDK 4.1?

Respuesta

4

Parece ser una regresión con alguna parte del código de informe que no respeta los problemas de la zona horaria. La salida se etiqueta como terminando antes de que comenzara, por lo que se confunde mucho y se atraganta.

Una solución, que encontré en algún lugar en Google, es cambiar la etapa de ejecución de ejecución del objetivo.

Cambio

"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests" 

a

"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests" 1> /tmp/RunUnitTests.out 

Está funcionando alrededor de la cuestión, en lugar de resolverlo, pero funciona.

+0

Funciona bien ahora, ¡gracias! – leinz

+0

¿Esto proporciona alguna indicación de si las pruebas fallaron o no? Porque si no, también puedes inhabilitar el objetivo de prueba unitaria (para que sepas que no se está ejecutando), en lugar de dejarlo correr y ocultar los resultados (para que puedas olvidar y pensar que está pasando). – benzado

+0

Por lo que puedo decir simplemente descarga el resultado en la ventana de compilación sin que ocurra el anidamiento sofisticado, por lo que aún puede ver la lista de pruebas aprobadas y/o errores .No oculta los resultados, sino que no los formatea. – creednmd

2

Mi sugerencia para solucionar su problema es considerar el uso de GHUnit. Funciona con sus clases SenTestCase existentes, pero también tiene un conjunto de clases/aserciones de prueba. Usted acaba de configurar un nuevo objetivo y apuntar a su clase de controlador. Obtienes un arnés de prueba completamente funcional que puede ejecutar tus pruebas tanto en el simulador como en dispositivos reales. Me parece mucho más fácil y más sólido que configurar un paquete de prueba y tener que administrar todo eso.

http://github.com/gabriel/gh-unit

+1

Apreciar la respuesta pero no resuelve el problema. Recibo el mismo error y me gustaría saber cómo solucionarlo. – Patrick

+0

Parece que tiene que ver con el código de registro. No tengo ni idea de cómo arreglar eso. Probablemente solo tengas que deshabilitarlo como parte de tu compilación y ejecutar las pruebas de la unidad manualmente :( – logancautrell

+0

No es exactamente una respuesta a mi pregunta, pero es bueno saber ahora sobre GHUnit. – leinz

4

La solución para el problema se puede encontrar en el Foro de Desarrolladores de Apple. Funciona bien en mi proyecto. Visite el sitio web y pruébelo.

+0

Suena bien, excepto que esto requiere ser un miembro de los programas de desarrollador pagados. – leinz

+0

El código fuente se publica en GitHub. http://gist.github.com/586296 – yusami

Cuestiones relacionadas