No se pueden ejecutar testings desde la línea de command a través de xcodebuild

Estoy intentando build y ejecutar casos de testing usando la línea de command para los casos de testing de iOS. He dado el siguiente command:

xcodebuild -target AppEngineTests -configuration Debug -sdk iphonesimulator TEST_AFTER_BUILD=YES clean build 

Construye la aplicación, pero las testings no se ejecutan.

¿alguien podría ayudar? Gracias

Encontré la propiedad name para requerir más especificaciones.

 xcodebuild test -workspace #{WORKSPACE_FILE} -scheme #{TEST_SCHEME} -destination 'platform=iOS Simulator,name=iPhone Retina (4-inch),OS=7.0' 

Fue lo que finalmente funcionó para mí. iPhone fue limitado y / o impnetworkingecible.

Como se menciona en otro póster (no se puede encontrar la cita), la 'plataforma' corresponde aproximadamente al divisor en la list de objectives, 'nombre' corresponde a la sub-selección y el parámetro del OS corresponde al lado derecho del chevron en la misma list less 'iOS'.

La documentation es sugerente y suena autoritaria a primera vista sin ser realmente completa o correcta, por desgracia.

Sorprendente que fue una molestia. Y qué tan bien funcionó una vez que se logró la invocación correcta.

No ha dicho qué versión de Xcode está utilizando, pero como etiquetó su pregunta con "xctest", parece seguro asumir que tiene Xcode 5 o posterior.

Xcode 5 mejora significativamente el soporte para ejecutar testings en xcodebuild , a través del verbo de test . Deberá especificar un esquema y un destino en lugar de un objective al usar este verbo, ya que actúa exactamente como el command Test en el Xcode IDE.

Por ejemplo, suponiendo que tiene un esquema compartido en su proyecto o área de trabajo denominado AppEngine que tiene su acción de esquema de testing configurada correctamente, podría simplemente usar

 xcodebuild test -scheme AppEngine -destination 'platform=iOS Simulator,name=iPad' 

para ejecutar todas las testings de unidad configuradas para el esquema de AppEngine en el simulador de iOS configurado como un iPad con el último iOS. Más detalles sobre la syntax del especificador de destino están en la página del manual xcodebuild . (¡Incluso puede utilizarlo para ejecutar testings en dispositivos iOS conectados!)

Las secuencias de commands que se utilizaron anteriormente para ejecutar las testings unitarias se han ajustado para remitir a los usuarios al verbo de la test porque con estas mejoras es lo que todos deberían estar usando.

Tuve un problema similar con la compilation Xcode. En mi caso, el problema era que no tenía ninguna testing asociada con mi esquema.

Vea mi respuesta SO (con diagtwig) aquí

Aterrizado aquí en busca de una resolución para un error de xcodebuild similar. Como addendum, también puede pasar una sola key = val a -destination, por ejemplo, -destination 'platform=iOS' y xcodebuild le dirá todas las alternativas disponibles para el esquema.

 λ ~/Development/app-ios/ task/JIOS-400-Earl-Grey-Spike* xcodebuild -workspace app.xcworkspace -scheme app -destination 'platform=iOS' -derivedDataPath "build" build-for-testing User defaults from command line: IDEDerivedDataPathOverride = /Users/schoudhary/Development/app-ios/build xcodebuild: error: Unable to find a destination matching the provided destination specifier: { platform:iOS } Missing requinetworking device specifier option. The device type “Generic iOS Device” requires that either “name” or “id” be specified. Please supply either “name” or “id”. Available destinations for the "App" scheme: { platform:iOS Simulator, id:D248DB01-A852-4360-A9C0-2D71AFE478D7, OS:10.3, name:iPad Air } { platform:iOS Simulator, id:CE87AF5A-141C-43DA-AE61-AF53593F37F7, OS:10.3, name:iPad Air 2 } { platform:iOS Simulator, id:E93B43E4-D24E-4927-B9EE-0375E15DCBD5, OS:10.3, name:iPad Pro (9.7 inch) } { platform:iOS Simulator, id:6D71DB17-0FE2-4D5E-BEE6-CC696445BA11, OS:10.3, name:iPad Pro (12.9 inch) } { platform:iOS Simulator, id:F7E37EF4-5E72-438A-A286-216C20158B47, OS:10.3, name:iPhone 5 } { platform:iOS Simulator, id:24653844-AE99-4B5B-8332-9FFD2208172F, OS:10.3, name:iPhone 5s } { platform:iOS Simulator, id:FD2089A4-BF3F-4F98-8E33-B7EFDCFE5B4D, OS:10.3, name:iPhone 6 } { platform:iOS Simulator, id:6EF0DFBD-E99E-4EB3-9C51-6E749F41B6E7, OS:10.3, name:iPhone 6 Plus } { platform:iOS Simulator, id:846E631C-6285-4B91-9BA6-1AB6E66C88DB, OS:10.3, name:iPhone 6s } { platform:iOS Simulator, id:A6943ADC-F6EF-42F6-9958-D966DFC419FC, OS:10.3, name:iPhone 6s Plus } { platform:iOS Simulator, id:B41ABED0-7554-438A-97AC-F34943ED4D79, OS:10.3, name:iPhone 7 } { platform:iOS Simulator, id:20F1582C-0D19-4F42-9DAD-43138FB923B9, OS:10.3, name:iPhone 7 Plus } { platform:iOS Simulator, id:683BB5CA-E0A8-4CE4-B0DD-AED4C4295B90, OS:10.3, name:iPhone SE } Ineligible destinations for the "App" scheme: { platform:iOS, id:dvtdevice-DVTiPhonePlaceholder-iphoneos:placeholder, name:Generic iOS Device } { platform:iOS Simulator, id:dvtdevice-DVTiOSDeviceSimulatorPlaceholder-iphonesimulator:placeholder, name:Generic iOS Simulator Device } 

solo otra forma útil de get el destino correcto.

Cabe señalar que puede usar instruments -s devices para get una list de todos los dispositivos disponibles.

También debe pasar la cadena como -destination 'platform=iOS Simulator,id=ID_OF_THE_SIMULATOR' por alguna razón, no le gustan los espacios entre los pares key = value.