Xcode 4.5 pruebas unitarias de línea de comandos
Tener un problema desde la actualización a Xcode 4.5 al ejecutar mis pruebas unitarias a través de la línea de comandos. La siguiente es la salida 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'
A pesar de que dice que las pruebas han pasado y completado, no creo que realmente se han ejecutado.
Estoy usando el siguiente comando para ejecutar las pruebas xcodebuild-workspace MyApp.xcworkspace-scheme MyAppTests-sdk iphonesimulator - configuration Debug clean build TEST_AFTER_BUILD=YES
¿Alguien se ha encontrado con el mismo problema y puede ofrecer una solución?
4 answers
Simplemente pensé que también debería compartir lo que hice para una solución a este problema. Seguí la solución descrita en https://stackoverflow.com/a/10823483/666943 pero convirtió el script ruby a shell. Al final básicamente instalé ios-sim
a través de homebrew y reemplace el Run Script
en el Build Phases
de mi objetivo de prueba 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:22:58
He notado este problema en las versiones beta de Xcode 4.5 / iOS 6. He estado trabajando en un corredor de pruebas unitarias independiente para solucionar este problema. Funciona compilando el paquete de pruebas unitarias y, a continuación, compilando una versión de la aplicación que ejecuta automáticamente las pruebas unitarias en un entorno de simulador.
La herramienta no está completa de ninguna manera, pero suficientes personas parecen estar teniendo este problema que estoy lanzando la herramienta como está por ahora. Por favor bifurcación o comentario para que pueda mejorar la herramienta.
Xcodetest: https://github.com/sgleadow/xcodetest
También mantenga un ojo en este radar en el problema http://openradar.appspot.com/12306879
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-28 10:15:53
xcodebuild -project ${PROJECT_PATH}/${PROJECT_NAME}.xcodeproj \
-scheme ${TEST_SCHEME} \
-configuration Debug \
-sdk iphonesimulator5.1 \
clean build \
TEST_AFTER_BUILD=YES
Establecer el iphonesimulator a la versión 5.1 parece resolver el problema. Hay errores de radar llenos sobre este tema.
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-29 20:36:49
También hay un pequeño truco que puede ayudar a ejecutar pruebas de línea de comandos en iOS6.0 simulator SDK
Estoy usando cedro y este ajuste me ayudó :
Primero, necesitas actualizar tu archivo main un poco:
// Faking up that workspace port
CFMessagePortCreateLocal(NULL, (CFStringRef) @"PurpleWorkspacePort", NULL, NULL,NULL);
return UIApplicationMain(argc, argv, nil, @"CedarApplicationDelegate");
En segundo lugar, debe agregar una 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 :)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-18 09:27:32