Sto sviluppando un progetto iOS e ho bisogno di accedere ai codici dell'app host dall'obiettivo del test dell'interfaccia utente, ma ho scoperto che mostra un errore di collegamento: non definito simbolo quando ho provato a Ho trovato che l'host di test e il caricatore di pacchetti per questo target sono tutti vuoti, quindi li ho impostati sulla mia app host e sono riuscito a superare l'errore di collegamento. Tuttavia, in fase di esecuzione continua a fallire quando chiama XCUIApplication.launch(). Qualcuno ha capito come accedere ai codici dell'app ospitante da questo target di test dell'interfaccia utente? Senza essere in grado di farlo, siamo costretti a fare tutto il test dell'interfaccia utente, che è molto traballante. Abbiamo sicuramente bisogno di avere passaggi non dell'interfaccia utente in scenari di test. Sto usando Swift per il mio progetto.Accesso al codice dell'app host dal target del test dell'interfaccia utente Xcode 7
risposta
Utilizzando il nuovo framework di automazione dell'interfaccia utente Apple introdotto in WWDC 15 non è possibile accedere al codice dell'app dal test di automazione interfaccia utente. Ha lo scopo di simulare ciò che un utente avrebbe accesso anche, che a volte può essere frustrante.
Hai una fonte per la tua dichiarazione relativa al fatto che il codice dell'app non è accessibile dai test dell'interfaccia utente? – singingAtom
@singingAtom I test dell'interfaccia utente sono un modulo separato dall'app, pertanto non vengono eseguiti all'interno dell'app come farebbe un test logico. L'unico modo per condividere il codice è compilare tutti i file dell'app che è necessario condividere tra i due moduli. Spero possa aiutare. – cakes88
@ cakes88 Hai qualche riferimento a come funziona la tua ultima frase? –
Uso la seguente tecnica per impostare i valori nella mia app prima di eseguire i test dell'interfaccia utente. Utile per impostare valori predefiniti o attivare mock di networking, ecc. Per la maggior parte, non ho avuto bisogno di leggere dall'app ancora. Tutto è riflesso nell'interfaccia utente e può essere testato in questo modo. Presto aggiungeremo dei test per garantire che l'app effettui determinate chiamate di rete. Non sono ancora sicuro di come lo proveremo da un caso di test dell'interfaccia utente.
impostare gli argomenti di tuo test dell'interfaccia utente
let app = XCUIApplication()
app.launchArguments = ["ResetDefaults", "NoAnimations", "UserHasRegistered"]
app.launch()
Leggi argomenti nella vostra applicazione
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 "UserHasRegistered":
Defaults.userRegistered = true
default:
break
}
}
}
bonus aggiuntive: se si utilizza argomenti di lancio per configurare la vostra applicazione, è banale per aggiungere le bandiere al vostro Xcode schema. Ad esempio, ho uno schema che cancella tutti i dati memorizzati e blocca ogni tentativo di accesso con una risposta positiva. Ora posso "accedere" tramite il simulatore senza colpire alcun server.
Haha, l'ho appena implementato. E come secondo passo ho provato a passare le informazioni tramite un'interfaccia di file. Scrivo il file 'a' nell'app e provo a leggerlo nei test ma non è lo stesso. Non so perché ... @ "/ var/mobile/Contenitori/Dati/Applicazione/8EDD0F16-005B-49E7-B8E3-726F195989DD/Documenti/a" @ "/ var/mobile/Contenitori/Dati/Applicazione/DD4A912D-5808-40AC-9BAD- 0475842190DA/Documenti/a " –
Se capisci qualcosa, scrivi un post sul blog! sono sicuro che molte persone sarebbero interessate Penso che la via da seguire potrebbe essere quella di effettuare una chiamata API a un server locale. Sembra un po 'complicato, ma scommetto che potrebbe essere gestito con uno script python a 30 linee. – kubi
Si noti che per gli argomenti che devono essere analizzati da NSUserDefaults, la chiave e il valore, ad es. '-AppleLanguages' e' (en) ', devono essere due elementi di array separati. –
- 1. Test host di accesso al database remoto
- 2. Accesso al layout Qt creato nell'interfaccia utente dal codice?
- 3. eseguire test dell'interfaccia utente xcode 7 su un dispositivo
- 4. Test dell'unità Xcode - Accesso alle risorse dal pacchetto dell'applicazione?
- 5. Documentazione per il test dell'interfaccia utente in XCode 7
- 6. Come cambiare dinamicamente il target per i test unitari in Xcode 7?
- 7. Xcode 7 Test UI, il pulsante di registrazione è disattivato
- 8. Xcode 7: la voragine tra test delle app e test dell'interfaccia utente è invalicabile?
- 9. Come utilizzare la copertura del codice in Xcode 7?
- 10. Cos'è l'appartenenza al target in Xcode 4
- 11. Includere una dipendenza da test dell'interfaccia utente Xcode 7 tramite Cocoapods?
- 12. Accedere al nome del test ScalaTest dal test interno?
- 13. Errore del linker durante l'accesso al modulo dell'applicazione nei test dell'interfaccia utente in XCode 7.1
- 14. Il target del test Xcode con l'applicazione host forza la destinazione errata nella sezione di build dello schema
- 15. accesso al modello dal modello
- 16. Richieste API simulate Xcode 7 Swift Test UI automatizzato
- 17. Le risorse dell'app non sono disponibili quando l'interfaccia utente esegue il test in Xcode 7
- 18. Accesso HDFS da host remoto tramite API Java, autenticazione utente
- 19. Xcode: impostazioni del progetto e impostazioni target
- 20. Accesso alla finestra principale dal controllo utente
- 21. Rimuovere il test dell'unità dal progetto Xcode?
- 22. Come velocizzare i casi di test dell'interfaccia utente in Xcode?
- 23. Drupal 7: Localhost/collegamento utente predefinito al sito web/utente
- 24. Rimuovere completamente XCode Target
- 25. XCode 4.2 Rinomina target
- 26. Xcode Unit test: Xcode non si ferma al breakpoint
- 27. Come accedere alla stringa localizzata durante il test dell'interfaccia utente automatizzato in Xcode 7?
- 28. cPanel/Host/Accesso a phpMyAdmin
- 29. Accesso al valore di controllo utente WPF
- 30. Impossibile accedere alle localizzazioni stringa in UI Test (Xcode 7)
Sto avendo lo stesso identico problema. Ho usato [link] (http://twobitlabs.com/2011/06/adding-ocunit-to-an-existing-ios-project-with-xcode-4/) per il caricatore/host di test bundle e [link] (http://savvyapps.com/blog/how-to-implement-ui-testing-in-an-existing-ios-app) che ha rilevato la verifica di "Abilita testabilità" nell'obiettivo principale. Sono arrivato allo stesso identico punto di te. Hai avuto fortuna negli ultimi due giorni da quando hai postato questa domanda? – Chris
Come dice @Konnor nella risposta, non è possibile accedere al processo della tua app da un test dell'interfaccia utente. Cosa stai cercando di fare? Ho avuto un certo successo lavorando a queste limitazioni nei nostri test. – kubi
@kubi: sono interessato alla soluzione alternativa. Voglio impostare/leggere un attributo in un oggetto singleton. Di fatto, questo può essere fatto aggiungendo un'interfaccia utente per questo nell'applicazione testata, ma questo sembra un po 'eccessivo. Hai trovato una soluzione migliore? –