La domanda è stata rimarcato a OS X quindi la mia risposta non è più valida è
risposta originale
Questo è impossibile. Il motivo di base è che i test sono collegati a un'istanza dell'applicazione in esecuzione, non hanno il controllo sul dispositivo, sono in esecuzione come parte dell'applicazione. Probabilmente puoi aprire l'URL ma non sarai in grado di tornare all'applicazione e fare un asserzione.
Si noti inoltre che XCUnit è un quadro di prova unità. Non sarai in grado di scrivere test di integrazione avanzati. Potresti avere più successo con UI Automation ma questo specifico test case sarà molto complicato anche per questo. Ad esempio, per aprire un collegamento dalla tua app nel simulatore, puoi creare una pagina HTML che reindirizzerà al link e quindi userai shell per exec open testLink.html -a "iOS Simulator"
. Tuttavia, a mio modesto parere questo tipo di test è inaffidabile e davvero difficile da scrivere e fare il debug.
Il mio consiglio sarebbe quello di:
- Scrivi una prova di unità che prende in giro
[UIApplication openURL:]
e verificare che si passa un URL corretto ad esso. Oppure, se vuoi l'altra direzione, scrivi un test unitario che chiamerà i metodi UIApplicationDelegate
nell'ordine chiamato, simulando l'apertura di un link dalla tua app. Questo è quanto puoi andare con XCUnit.
- Verificare il resto manualmente.
Sei in grado di ottenere ciò che ti serve con NSURLProtocol? –
Potresti riformulare cosa intendi con "iscriviti a uno schema URL"? Intendi, come stabilisci quale applicazione è stata assegnata per gestire uno schema particolare? O intendi, come collaudi se openURL esegue effettivamente l'azione? –
La mia applicazione è registrata in uno schema URL come questo: myapp: //. Voglio testare se posso aprire http://mywebsite.com in un browser che reindirizzerà a myapp: // alla fine. – McZonk