¿Cómo simular datos en UITest en Xcode 7?

¿Alguien ha intentado include datos simulados con las nuevas testings de interfaz de usuario de Xcode 7?

  • ¿Has usado un marco específico?
  • ¿Cómo has administrado los objectives?

Creo que hay muchas forms de acercarse a esta: la dificultad es que Apple diseñó intencionalmente los UITest para que se ejecuten completamente separados de la aplicación bajo testing. Dicho esto, hay algunos ganchos que puedes usar para coordinar la lógica en la aplicación con lógica en tus testings para alimentar datos falsos o alterar el comportamiento de tu aplicación de cualquier forma. Los dos que he encontrado más útiles son launchEnvironment y launchArguments .

en su testing – XCUIApplication().launchArguments corresponde a NSProcessInfo.processInfo().arguments en su código de la aplicación

Del mismo modo: XCUIApplication().launchEnvironment -> NSProcessInfo.processInfo().environment

launchEnvironment es un dictionary directo mientras que los arguments de lanzamiento son una matriz. En su testing puede alimentar cualquier valor que desee en cualquiera de estos parameters antes de iniciar la aplicación:

 let app = XCUIApplication() app.launchEnvironment["-FakedFeedResponse"] = "success.json" app.launch() 

Luego, en su lógica de aplicación, puede activar estos valores como quiera. Algo como:

 func fetchFeed() -> JSON { if let fakedJSONFilename = NSProcessInfo.processInfo().environment["-FakedFeedResponse"] { let fakePayload = fakeDataFileNamed(fakedJSONFilename) return fakePayload } else { //Make network call and return a real JSON payload } } 

Usando este patrón, sus datos simulados / simulados necesitarán ser files incluidos como miembros del objective de la aplicación.