2015-08-03 10 views
7

Possiedo un'applicazione che utilizza i dati principali. Il comportamento dell'applicazione è diverso a seconda che i dati siano già stati compilati.Come iniziare con Core Data vuoti per ogni asserzione di test dell'interfaccia utente in Swift?

Avevo sperato che, prima di ogni caso di test, i dati di base sarebbero stati svuotati, rendendo ogni test case eseguito su una nuova istanza di app. I casi di test non dovrebbero dipendere dallo stato di alcuni dispositivi di test, specialmente perché altri casi di test manipolano questo stato. Sfortunatamente, per impostazione predefinita, i dati principali non si fermano solo tra i casi di test, ma anche tra esecuzioni di test completamente separate. Sto cercando di risolvere questo comportamento.

La mia prima idea era di scaricare tutti i dati principali nella funzione di rimozione. In questo modo ogni test si ripulirebbe da solo. Purtroppo, non sono in grado di ottenere un NSManagedObjectContext con questo comando:

let context = (UIApplication.sharedApplication().delegate as! MyApp.AppDelegate).managedObjectContext! 

Perché ha questo errore di compilazione:

Undefined symbols for architecture x86_64: "type metadata accessor for MyApp.AppDelegate", referenced from: MyAppUITests.MyAppUITests.tearDown 

Per correggere questo errore ho provato sia aggiungendo le UITests ai membri di destinazione AppDelegate e facendo un @testable import MyApp. Nessuno dei due ha funzionato. Ho bisogno di managedObjectContext per svuotare i dati principali.

Ora penso che ci sia un modo migliore, integrato, per scaricare tutti i dati principali all'inizio o alla fine di ogni caso di test eseguito. Sarebbe preferibilmente alla fine, poiché ogni test dovrebbe ripulire se stesso. Qualcuno sa come questo potrebbe essere fatto?

Grazie in anticipo!

risposta

2

Si può fare questo semplice utilizzando XCUIApplication().launchEnvironment = ["key":"val"]

e controllando se AppDelegate e l'analisi NSProcessInfo.

Mi sto battendo per ottenere informazioni dall'app alla prova/invio di istruzioni non solo durante l'avvio.