2009-12-22 11 views
6

Ho recentemente iniziato a testare un'app che scrivo per l'iPhone. Ho le basi per creare i miei test, anche se sembra un po 'non ottimale. Tuttavia, sto avendo problemi a impostare l'analisi della copertura del codice utilizzando gcov.Come configurare gcov per l'analisi della copertura del codice in iPhone SDK?

Ho seguito le istruzioni qui: http://www.cubiclemuses.com/cm/articles/2009/05/14/coverstory-on-the-iphone/, che si ripetono molto similmente in altri luoghi. Ho provato a utilizzare Google's AppleScript dalla loro casella degli strumenti per Mac per farlo nel caso in cui stavo inserendo qualcosa di sbagliato in Xcode.

Ho utilizzato lo iPhoneUnitTests sample di Apple come progetto di base e semplicemente eseguendo AppleScript di Google per abilitare il test di copertura del codice contro l'obiettivo CalcTests per ottenere un esempio automatizzato e ben funzionante di esso non funzionante. Non importa quale sia lo scenario che uso, il mio codice, Apple, impostare manualmente le variabili corrette o lasciando AppleScript di Google lo fa per me, tutto quello che ottiene sono questi errori nella console di debug una volta che le prove sono finite in esecuzione:

profiling:/Users:Cannot create directory 
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/CalcViewController.gcda:Skip 
profiling:/Users:Cannot create directory 
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/Calculator.gcda:Skip 
profiling:/Users:Cannot create directory 
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/CalcAppDelegate.gcda:Skip 
profiling:/Users:Cannot create directory 
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/main.gcda:Skip 

I file gcda non vengono creati e quindi non ho nulla da analizzare. Qualsiasi aiuto con questo sarebbe molto apprezzato.

risposta

6

La soluzione è che queste guide si riferiscono al codice in esecuzione nel simulatore iPhone. Poiché eseguo test a livello di applicazione, eseguo il cross-profiling e devo seguire this information.

Ho quindi impostato la variabile di ambiente GCOV_PREFIX per eseguirne il dump nella directory Documenti della mia applicazione, quindi utilizzo l'Organizer in Xcode per scaricare il pacchetto della mia app dal dispositivo per estrarre i file .gcda dalla directory Documenti. Questo è piuttosto ingombrante e difficilmente si presta a test di copertura automatici, ma è l'unica soluzione che posso vedere dati i limiti di esecuzione in una sandbox e l'utilizzo di classi che sono disponibili solo per il test sul dispositivo (ovvero MediaPlayer.framework).

Problemi correlati