2011-07-06 8 views

Respuesta

14

Sí, tengo que trabajar. Mi solución es de alguna manera áspera y podría no ser adecuada en todos los casos.

Disclaimer: This solution requires to edit system files. It works for me, but may mess up XCode's unit testing stack, especially if you do not understand what you are doing.

En /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Tools/RunPlatformUnitTests reemplazar

if [ "${TEST_HOST}" != "" ]; then 

    Warning ${LINENO} "Skipping tests; the iPhoneSimulator platform does not currently support application-hosted tests (TEST_HOST set)." 

else 

con

if [ "${TEST_HOST}" != "" ]; then 

    mkdir -p "${BUILT_PRODUCTS_DIR}/Documents" 
    mkdir -p "${BUILT_PRODUCTS_DIR}/Library/Caches" 
    mkdir -p "${BUILT_PRODUCTS_DIR}/Library/Preferences" 
    mkdir -p "${BUILT_PRODUCTS_DIR}/tmp" 

    export CFFIXED_USER_HOME="${BUILT_PRODUCTS_DIR}/" 

    RunTestsForApplication "${TEST_HOST}" "${TEST_BUNDLE_PATH}" 
else 

Es posible mover el inicio de usuario fijo en una ubicación diferente, pero creo que se necesita para mover el .app y .octest paquetes a lo largo.

Agregue -RegisterForSystemEvents a la configuración de compilación OTHER_TEST_FLAGS de su paquete de prueba.

Asegúrese de que el paquete de prueba contiene una fase de acumulación de ejecución de script con el contenido

# Run the unit tests in this test bundle. 
"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests" 

Crear un nuevo esquema para sus pruebas.

Usted debe ser capaz de ejecutar las pruebas desde la línea de comandos utilizando el estándar xcodebuild:

xcodebuild -workspace $(WORKSPACE_NAME).xcworkspace -scheme $(TEST_SCHEME) -configuration debug -sdk iphonesimulator

El simulador no debe estar en funcionamiento, en el momento en que lo permite ejecutar las pruebas.

Espero que esta información esté completa, si algo no funciona como se espera, por favor pregunte.

+0

Lo intentaré. Te haré saber. –

+0

Lo probé. Obtengo el siguiente resultado: 'xcodebuild: error: no se pudo construir el proyecto de espacio de trabajo con el esquema TestScheme. Motivo: El esquema "TestScheme" no está configurado para el inicio. '. ¿Encontraste este problema? En Xcode solo puedo ejecutar las pruebas con 'cmd-u' y no con 'cmd-r' (El comando de ejecución). –

+0

Ya lo tengo. Editó el archivo incorrecto 'RunPlatformUnitTests'. Puede ejecutar pruebas con elementos de IU y pasan. No veo el simulador, ¿comienza el simulador en tu 'versión'? ¿O las pruebas de aplicación se están ejecutando sin el simulador? –

1

Funcionó perfectamente, gracias! ¡Las pruebas automáticas están de vuelta en acción en nuestro servidor CI Jenkins! Solo tuve que arreglar mi TEST_HOST=${BUNDLE_LOADER}. Haga esto si obtiene errores sobre "no tal archivo" al ejecutar las pruebas.

+1

¿Cambiar a qué? Dejo mi TEST_HOST vacía, eso funciona para mí. –

2

Puede asegurarse de que el simulador no se está ejecutando con esto:

osascript -e 'tell app "iPhone Simulator" to quit'

se puede determinar si el simulador está activo con esto:

sh -c 'ps -xaco command | grep "iPhone Simulator"'

1

Parece que con Xcode 4.5GM, ahora se admiten las pruebas de aplicación en el simulador.

+0

Desde dentro de Xcode, pero no utilizando xcodebuild porque el script RunPlatformUnitTests no se ha actualizado. –

+0

Actualicé mi respuesta de acuerdo con mis observaciones. – ff10

+0

Aún no cambia el hecho de que las pruebas de aplicación, listas para usar, no funcionan cuando se usa 'xcodebuild'. Funcionan bien desde dentro de Xcode. SDK es irrelevante. –