Acceso al código de la aplicación host desde el objective de testing de UI de Xcode 7

Estoy desarrollando un proyecto iOS, y necesito acceder a los códigos de la aplicación host desde el objective de testing de la interfaz de usuario, pero encontré que muestra un error de enlace: símbolo no definido cuando lo intenté. Encontré que el host de testing y el cargador de packages para este objective están vacíos, por lo que los puse en mi aplicación host y pude pasar el error del enlace. Sin embargo, en el time de ejecución sigue fallando al llamar a XCUIApplication.launch (). ¿Alguien ha descubierto cómo acceder a los códigos de la aplicación host desde este objective de testing de la UI? Sin poder hacer esto, nos vemos obligados a hacer todas las testings de interfaz de usuario, lo cual es muy escaso. Definitivamente necesitamos tener pasos que no sean de interfaz de usuario en escenarios de testing. Estoy usando Swift para mi proyecto.

Utilizo la siguiente técnica para establecer valores en mi aplicación antes de ejecutar las testings de interfaz de usuario. Útil para configurar valores pnetworkingeterminados o activar simulaciones de networkinges, etc. En su mayor parte, no he necesitado leer nada fuera de la aplicación todavía. Todo se refleja en la interfaz de usuario y se puede probar de esa manera. Pronto vamos a agregar testings para garantizar que la aplicación realice ciertas llamadas de networking. Todavía no estoy seguro de cómo lo probaremos desde dentro de un caso de testing de UI.

Establezca arguments en su testing de interfaz de usuario

let app = XCUIApplication() app.launchArguments = ["ResetDefaults", "NoAnimations", "UserHasRegistenetworking"] app.launch() 

Leer arguments en tu aplicación

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { var arguments = NSProcessInfo.processInfo().arguments arguments.removeFirst() print("App launching with the following arguments: \(arguments)") // Always clear the defaults first if arguments.contains("ResetDefaults") { destroyUserDefaults() clearKeychain() } for argument in arguments { switch argument { case "NoAnimations": UIView.setAnimationsEnabled(false) case "UserHasRegistenetworking": Defaults.userRegistenetworking = true default: break } } } 

Bonificación adicional: si usa arguments de lanzamiento para configurar su aplicación, es trivial agregar banderas a su esquema Xcode. Por ejemplo, tengo un esquema que borra todos los datos almacenados, y aplasta cualquier bash de inicio de session con una respuesta exitosa. Ahora puedo "iniciar session" a través del simulador sin chocar con ningún server.

Usando el nuevo marco de automation de interfaz de usuario que Apple introdujo en WWDC 15, no es posible acceder al código de su aplicación desde la testing de automation de interfaz de usuario. Está destinado a simular lo que un usuario tendría acceso también, lo que a veces puede ser frustrante.