2010-06-14 5 views
1

J'ai une application Cocoa qui utilise un installateur. Je veux être en mesure d'exécuter une couverture de code sur le code (après qu'il a été installé).Comment puis-je exécuter Gcov sur une application Cocoa installée?

Il ne s'agit pas du scénario de test unitaire habituel où un seul binaire exécutera une série de tests. Au contraire, les tests en question vont interagir avec l'interface utilisateur et le back-end de l'application pendant son exécution, donc je souhaite idéalement pouvoir démarrer l'application en sachant que Gcov la profile et ensuite lancer des tests.

Des idées?

Mise à jour

Merci à mustISignUp. Pour clarifier pourquoi j'ai posé la question:

L'erreur que j'ai faite a été de penser que l'objet, les fichiers .gcno et .gcda devaient être installés à côté des binaires (ce qui rend l'installateur difficile). En l'occurrence, l'emplacement d'origine des fichiers est câblé dans le code avec le code d'instrumentation.

La solution que je suis allé avec zipper le code sur la machine de construction et le mettre sur le disque sur la machine de test. lcov (ou seulement gcov) peut être exécuté à partir de là. Sinon, les fichiers .gcda seront créés sur le disque et doivent être recopiés sur la machine contenant le code source. De toute façon, le code source ne doit pas nécessairement être présent lors de l'installation et de l'exécution, mais si vous souhaitez récupérer vos résultats dans le style lcov, les fichiers du compteur de couverture produits doivent être réconciliés avec le code source.

Répondre

1

L'application doit être compilée avec les indicateurs GCC corrects qui insèrent les instructions de profilage dans le code. Ce n'est pas quelque chose que vous pouvez allumer et éteindre. c'est-à-dire que votre code est modifié au moment de la compilation pour afficher les informations de couverture. Ainsi, si vous avez compilé l'application avec les bons indicateurs, elle émettra des données de couverture, si ce n'est pas le cas, ce ne sera pas le cas (et vous ne le voudriez certainement pas pour une application que vous alliez distribuer). .

Questions connexes