Mi sto imbattendo in un problema e volevo confermare che sto facendo le cose nel modo corretto.Test dell'unità Xcode - Accesso alle risorse dal pacchetto dell'applicazione?
Posso testare cose semplici con i miei test SenTestingKit, e va tutto bene. Ho creato un pacchetto unit test e lo ho impostato come dipendenza dal target principale dell'applicazione. Esegue correttamente tutti i test ogni volta che premo cmd + B.
Ecco dove mi imbatto in problemi. Ho alcuni file XML che devo caricare dalla cartella delle risorse come parte dell'applicazione. Essendo un buon tester di unità, voglio scrivere dei test unitari attorno a questo per assicurarmi che stiano caricando correttamente.
Così ho qualche codice che assomiglia a questo:
NSString *filePath = [[NSBundle mainBundle]
pathForResource:@"foo" ofType:@"xml"];
Questo funziona quando l'applicazione viene eseguita, ma durante un test di unità, mainBundle
punti al fascio sbagliato, quindi questa riga di codice restituisce zero.
quindi l'ho cambiato fino ad utilizzare una classe nota come questo:
NSString *filePath = [[NSBundle bundleForClass:[Config class]]
pathForResource:@"foo" ofType:@"xml"];
Questo non funziona neanche, perché per il test di compilare anche il codice come questo, è Config
deve essere parte del target di test unitario. Se aggiungo questo, il bundle per quella classe diventa il pacchetto Unit Test. (Ugh!)
Mi sto avvicinando a questo nel modo sbagliato?
Provare a costruirlo e quindi eseguire i test. Ho visto un video di iTunes U su questo e hanno detto che se il target di test non è stato impostato correttamente, testerebbe l'ultima build durante l'esecuzione invece di costruire i test in esecuzione. Avete controllato per assicurarsi che non sia il caso? – Tacoman667
Provate a costruire il progetto di test unitario? Parte del bundle di test delle unità consiste nell'eseguire gli script, quindi l'ho configurato come dipendenza dalla destinazione della mia applicazione. CMD + B dovrebbe sempre eseguire test. –