unit-testing ios6 xcodebuild xcode4.5

unit testing - Prueba de unidad de línea de comandos de Xcode 4.5



unit-testing ios6 (4)

Me di cuenta de este problema en las versiones beta de Xcode 4.5 / iOS 6. He estado trabajando en un corredor de pruebas de unidad independiente para solucionar este problema. Funciona mediante la compilación de su paquete de prueba de unidad, luego compila una versión de su aplicación que ejecuta automáticamente las pruebas de unidad en un entorno de simulador.

La herramienta de ninguna manera está completa, pero suficientes personas parecen tener este problema que estoy liberando la herramienta como es por ahora. Por favor bifurca o comenta para que pueda mejorar la herramienta.

xcodetest: https://github.com/sgleadow/xcodetest

También mantente atento a este radar sobre el problema http://openradar.appspot.com/12306879

Tener un problema desde que actualicé a Xcode 4.5 cuando ejecutaba mis pruebas unitarias a través de la línea de comandos. El siguiente es el resultado que estoy viendo cuando intento ejecutar mis pruebas

Unknown Device Type. Using UIUserInterfaceIdiomPad based on screen size Terminating since there is no workspace. /Applications/Xcode.app/Contents/Developer/Tools/RunPlatformUnitTests.include:334: note: Passed tests for architecture ''i386'' (GC OFF) /Applications/Xcode.app/Contents/Developer/Tools/RunPlatformUnitTests.include:345: note: Completed tests for architectures ''i386''

Aunque dice que las pruebas han pasado y se han completado, no creo que realmente se hayan ejecutado.

Estoy usando el siguiente comando para ejecutar las pruebas xcodebuild -workspace MyApp.xcworkspace -scheme MyAppTests -sdk iphonesimulator -configuration Depurar compilación limpia TEST_AFTER_BUILD = SÍ

¿Alguien ha tenido el mismo problema y puede ofrecer una solución?


Solo pensé que también debería compartir lo que hice para encontrar una solución a este problema. Seguí la solución descrita en https://.com/a/10823483/666943 pero convertí el script de ruby ​​en shell. Al final, básicamente instalé ios-sim través de homebrew y reemplazo el Run Script en el objetivo Build Phases of my Test con lo siguiente:

if [ "$RUN_UNIT_TEST_WITH_IOS_SIM" = "YES" ]; then test_bundle_path="$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.$WRAPPER_EXTENSION" ios-sim launch "$(dirname "$TEST_HOST")" --setenv DYLD_INSERT_LIBRARIES=/../../Library/PrivateFrameworks/IDEBundleInjection.framework/IDEBundleInjection --setenv XCInjectBundle="$test_bundle_path" --setenv XCInjectBundleInto="$TEST_HOST" --args -SenTest All "$test_bundle_path" echo "Finished running tests with ios-sim" else "${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests" fi

Para comenzar la prueba ahora paso el argumento RUN_UNIT_TEST_WITH_IOS_SIM=YES por ejemplo

xcodebuild -workspace MyApp.xcworkspace -scheme MyAppTests -sdk iphonesimulator -configuration Debug clean build RUN_UNIT_TEST_WITH_IOS_SIM=YES


También hay poco truco que puede ayudar a ejecutar pruebas de línea de comandos en iOS6.0 simulador SDK

Estoy usando Cedro y este ajuste me ayudó:

Primero, necesitas actualizar un poco tu archivo principal :

// Faking up that workspace port CFMessagePortCreateLocal(NULL, (CFStringRef) @"PurpleWorkspacePort", NULL, NULL,NULL); return UIApplicationMain(argc, argv, nil, @"CedarApplicationDelegate");

En segundo lugar, debe agregar categoría a UIWindow:

@implementation UIWindow (Private) - (void)_createContext { // Doing nothing here. Just for crash avoidance } @end

Cedar Unittest funcionará bien, con algunas advertencias de tiempo de ejecución, pero, al menos, podrán ejecutarse :)


xcodebuild -project ${PROJECT_PATH}/${PROJECT_NAME}.xcodeproj / -scheme ${TEST_SCHEME} / -configuration Debug / -sdk iphonesimulator5.1 / clean build / TEST_AFTER_BUILD=YES

Establecer el iphonesimulator en la versión 5.1 parece resolver el problema. Hay errores de radar llenos sobre este problema.

Este artículo también menciona una buena solución a seguir:

http://baolei.tumblr.com/post/32428168156/ios-unit-test-from-command-line-ios6-xcode4-5