2009-12-22 3 views
6

J'ai récemment commencé à tester une application que j'écris pour l'iPhone. J'ai les bases de la création de mes propres tests, même si cela semble un peu sous-optimal. J'ai cependant de la difficulté à mettre en place une analyse de couverture de code en utilisant gcov.Comment configurer gcov pour l'analyse de la couverture de code dans iPhone SDK?

J'ai suivi les instructions ici: http://www.cubiclemuses.com/cm/articles/2009/05/14/coverstory-on-the-iphone/, qui sont répétées de manière très similaire dans d'autres endroits. J'ai essayé d'utiliser Google's AppleScript de leur boîte à outils pour Mac pour le faire juste au cas où je saisis quelque chose de mal dans Xcode. J'ai utilisé le iPhoneUnitTests sample d'Apple comme projet de base, et j'ai simplement exécuté le script AppleScript de Google pour activer le test de couverture de code sur la cible CalcTests afin d'obtenir un exemple automatisé, bien géré, qui ne fonctionne pas. Peu importe ce scénario que je l'utilise, mon propre code, Apple, le réglage manuel des variables appropriées ou de laisser AppleScript Google le faire pour moi, tout ce que je reçois sont ces erreurs dans la console de débogage une fois les tests terminés en cours d'exécution:

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 

Les fichiers gcda ne sont pas créés, et donc je n'ai rien à analyser. Toute aide avec ceci serait grandement appréciée.

Répondre

6

La solution est que ces guides se réfèrent au code courant dans le simulateur iPhone. Parce que j'exécute des tests au niveau de l'application, je suis cross-profileing et dois suivre this information. J'ai ensuite défini la variable d'environnement GCOV_PREFIX pour la vider dans le répertoire Documents de mon application, puis j'utilise l'organiseur dans Xcode pour télécharger le package de mon application à partir du périphérique pour extraire les fichiers .gcda du répertoire Documents. C'est plutôt lourd et ne se prête guère aux tests de couverture automatique, mais c'est la seule solution que je peux voir compte tenu des contraintes de fonctionnement dans un sandbox et d'utilisation de classes uniquement disponibles pour tester sur l'appareil (à savoir MediaPlayer.framework).