2010-10-27 7 views
1

J'utilise actuellement OCUnit fourni avec Xcode 3.2.4 pour effectuer des tests unitaires de mon application. Mon flux de travail consiste souvent à définir des points de rupture dans un ordre Unittestin défaillant pour inspecter rapidement l'état. J'utilise la configuration de OCUnit d'Apple:Tests unitaires et développement iPhone

http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iphone_development/135-Unit_Testing_Applications/unit_testing_applications.html

mais la configuration me donne des maux de tête au-dessus. Apple distingue les tests d'application et les tests logiques. Comme je le vois:

  • Vous ne pouvez pas déboguer les tests logiques. C'est comme s'ils étaient invisibles lorsque vous construisiez votre projet.

  • Vous pouvez déboguer des tests d'application, mais vous devez exécuter ces derniers sur l'appareil et non le simulateur (quelle est la raison?)

Cela signifie que tout se déplace genre de lentement avec mon flux de travail actuel. Des conseils pour que les tests d'application soient exécutés sur le simulateur? Ou des pointeurs de broche à un autre cadre de test? Serait par exemple. google-toolbox-for-mac fonctionne mieux en général ou pour mes besoins spécifiques? En outre, les commentaires généraux sur l'utilisation des points d'arrêt dans les tests unitaires sont les bienvenus! :-)

Répondre

1

J'ai déjà utilisé la plate-forme de test de Google Toolbox et ça a bien fonctionné, il fonctionnait à la fois sur le simulateur et sur l'appareil et je pouvais déboguer mes tests si je le voulais. Récemment, j'ai eu marre de regrouper tellement de code avec chacun de mes projets et j'ai essayé Apple.

Je trouve également que les tests de logique/application se divisent bizarrement, d'autant plus que je ne trouve aucun moyen de déboguer les tests de logique maintenant. (Et si vous utilisez des parties de AVFoundation qui ne seront pas construites pour Simulator, vous n'avez apparemment pas de chance avec les tests logiques, ce qui semble étrange.) Un des avantages est que je peux exécuter les tests logiques rapidement pendant la construction .

Je suppose que cela ne vous aide pas beaucoup - le fait est que vous pouvez déboguer les tests sous GTM. Et vous pouvez également vouloir vérifier this related question.

0

Je sais que ce n'est pas vraiment une bonne réponse, et que ce n'est pas vraiment utile pour votre cause. Mais j'ai utilisé NSLog pour exécuter mes tests unitaires (si rien ne sort sur la console, alors le succès). Quand je commente ma méthode de test, les tests ne sont pas exécutés. J'ai trouvé cela beaucoup plus prévisible et fiable que OCUnit. Je préférerais de loin utiliser un vrai testeur d'unité, mais c'était trop frustrant pour gérer les erreurs souvent étranges qui pourraient survenir à partir d'OCUnit et aussi les autres manques/manque de fonctionnalités que vous décrivez ci-dessus.