2014-06-11 13 views
6

Mi piacerebbe scrivere test automatici per il mio codice CloudKit utilizzando il framework XCTest. Il caso di test viene eseguito, ottiene un oggetto contenitore valida, ottiene un oggetto di database pubblica valida, ma poi muore con un'eccezione quando provo a fare qualcosa di reale:Esecuzione del codice CloudKit nei test?

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
    reason: 'Failed to establish valid container/bundleID information' 

Quello che ho provato finora:

  • Ho controllato lo Info.plist per il mio target di test e l'ID del bundle corrisponde all'ID del contenitore.
  • Ho swizzled [[NSBundle mainBundle] bundleIdentifier] per assicurarsi che restituisca l'ID bundle corretto.
  • Ho copiato le autorizzazioni iCloud dalla destinazione della mia app principale.

Ma ho ancora l'eccezione. C'è un modo per far funzionare il codice CloudKit nei test?

+3

Ho ricevuto questo errore quando il mio provisioning non era corretto. Controlla che nella pagina delle impostazioni del progetto non sia presente alcun errore accanto al team e che, in base alle funzionalità, l'attivazione di iCloud sia attiva, il servizio Cloudkit sia selezionato e senza passaggi contrassegnati non validi. Dopo averlo risolto, i miei test funzionano OK. –

risposta

3

Il punto principale è eseguire i test come "test dell'applicazione". Eseguo un test su un framework personalizzato, quindi non ci sono applicazioni per eseguire la suite di test, nessun diritto e quindi nessun CloudKit. Ho dovuto aggiungere un semplice target "Test Rig" (un'app Cocoa vuota), impostare le autorizzazioni lì e impostare questo banco di prova come un caricatore di pacchetti e un host di test per la suite di test. Quindi i test possono usare CloudKit bene. Grazie per avermi trovato sulla buona strada, @Ward!

Problemi correlati