La mise en œuvre de Tests Unitaires avec iOS
J'ai suivi ce tutoriel à l'installation de l'unité de test sur mon application quand je suis un peu coincé.
Au point 8 dans le tutoriel il montre cette image, qui est ce que je doit m'attendre quand je build: le texte d'alt http://developer.apple.com/library/ios/documentation/Xcode/Conceptual/iphone_development/art/logic_test_failure_text_editor.jpg
Cependant ce n'est pas ce que je reçois quand je construire. Je reçois ce message d'erreur: Command /bin/sh failed with exit code 1
ainsi que le message d'erreur de l'unité de test est créé. Puis, quand j'ai étendre sur la première erreur que j'obtient ceci:
PhaseScriptExecution "Run Script" "build/3D Pool.build/Debug-iphonesimulator/LogicTests.build/Script-1A6BA6AE10F28F40008AC2A8.sh"
cd "/Users/james/Desktop/FYP/3D Pool"
setenv ACTION build
setenv ALTERNATE_GROUP staff
...
setenv XCODE_VERSION_MAJOR 0300
setenv XCODE_VERSION_MINOR 0320
setenv YACC /Developer/usr/bin/yacc
/bin/sh -c "\"/Users/james/Desktop/FYP/3D Pool/build/3D Pool.build/Debug-iphonesimulator/LogicTests.build/Script-1A6BA6AE10F28F40008AC2A8.sh\""
/Developer/Tools/RunPlatformUnitTests.include:412: note: Started tests for architectures 'i386'
/Developer/Tools/RunPlatformUnitTests.include:419: note: Running tests for architecture 'i386' (GC OFF)
objc[12589]: GC: forcing GC OFF because OBJC_DISABLE_GC is set
Test Suite '/Users/james/Desktop/FYP/3D Pool/build/Debug-iphonesimulator/LogicTests.octest(Tests)' started at 2010-01-04 21:05:06 +0000
Test Suite 'LogicTests' started at 2010-01-04 21:05:06 +0000
Test Case '-[LogicTests testFail]' started.
/Users/james/Desktop/FYP/3D Pool/LogicTests.m:17: error: -[LogicTests testFail] : Must fail to succeed.
Test Case '-[LogicTests testFail]' failed (0.000 seconds).
Test Suite 'LogicTests' finished at 2010-01-04 21:05:06 +0000.
Executed 1 test, with 1 failure (0 unexpected) in 0.000 (0.000) seconds
Test Suite '/Users/james/Desktop/FYP/3D Pool/build/Debug-iphonesimulator/LogicTests.octest(Tests)' finished at 2010-01-04 21:05:06 +0000.
Executed 1 test, with 1 failure (0 unexpected) in 0.000 (0.002) seconds
/Developer/Tools/RunPlatformUnitTests.include:448: error: Failed tests for architecture 'i386' (GC OFF)
/Developer/Tools/RunPlatformUnitTests.include:462: note: Completed tests for architectures 'i386'
Command /bin/sh failed with exit code 1
Maintenant, c'est très bizarre qu'il exécute les tests (et de réussir comme vous pouvez le voir mon STFail de tir) parce que si j'ajoute un autre test qui passe je n'obtiens pas d'erreurs, de sorte que les tests fonctionnent très bien. Mais pourquoi suis-je ce surplus de construire un échec?
Il peut également être intéressant de noter que lors du téléchargement de solutions/templates qui devrait fonctionner, j'obtiens la même erreur. Je devine que j'ai mis quelque chose de mal ici, mais j'ai juste suivi un tutoriel correctement à 100%!
EDIT: Selon ce blog, ce post et quelques autres sites, je ne suis pas le seul à recevoir ce problème. Il a été comme ça depuis la version de xCode 3.2, en supposant que les dev apple centre de documents et tutoriels etc sont pré-3.2 ainsi.
Cependant certains disent son d'un problème connu, tandis que d'autres semblent penser que c'était intentionnel. Je voudrais à la fois l'étendue de la console et dans le code des messages, et je n'ai certainement pas comme la Commande "/bin/sh..." erreur et pense vraiment qu'ils ont documenté une telle mise à jour. J'espère que ce sera corrigé bientôt de toute façon.
Mise à JOUR:
Voici la confirmation que c'est quelque chose a changé depuis la version de xCode 3.2.1.
Cette image:
le texte d'alt http://ing0.co.uk/info/pics/unittest-xcode-3.2.1.png est de mon test de construire à l'aide 3.2.1. C'est à partir d'une ancienne version (3.1.4):
le texte d'alt http://ing0.co.uk/info/pics/unittest-xcode-3.1.4.png. (Le projet pour a été inchangé).
- Je reçois ce même problème dans 3.2.5 (64-bit Intel Core i3, OSX 10.6.6)
- Nice pour vous à la générosité, mais je ne suis pas sûr qu'il y aura une réponse!
- C est pas grave, j'ai l'impression d'avoir des tests de travail.
Vous devez vous connecter pour publier un commentaire.
Double-cliquez sur 'Exécuter le script' sous 'Cibles'/'à Votre script nom de la cible", puis entrez
Fondamentalement, vous devez ajouter
à ce qui est déjà là
Avez-vous essayé de définir la configuration de la compilation de "Debug" pour le cas de test ?
je l'ai fait, comme illustré à http://nothing2fancy.com/2009/08/04/failed-tests-for-architecture-i386-gc-off/ et il a travaillé
essayez de vérifier ce problème SenTestCase dans Xcode 3.2 et XCBuildLogCommandInvocationSection Erreurs
la solution de contournement de la question du travail pour moi.
Menu: Projet --> Nouvelle Phase de construction --> Nouvelle RunScript Phase de construction --> Collez le texte suivant dans la zone de texte vide région:
"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests" 1> /tmp/RunUnitTests.out
Maintenant, essayez de construire et vous devriez obtenir une erreur sur échec des tests unitaires.
Je ne sais pas il une bonne voie ou pas, mais c'est un travail pour moi.
Et pas d'erreur pour "i386" (GC OFF)".
Bonne chance.
Lorsque vous créez votre première classes de cas de test, assurez-vous que l'Objectif est fixé à votre UnitTest cible, pas votre application cible.
Si vous oubliez de le faire lorsque vous créez la classe, vous pouvez Obtenir des informations sur la classe existante et définir la cible....
OK, n'a jamais joué avec les tests unitaires dans XCode (j'ai bien aimé JUnit dans le bon vieux java fois). C'est juste un essai: Quel compilateur êtes-vous à l'aide de GCC ou LLVM? Peut-être que GCC est le meilleur choix pour être sur le côté sécuritaire.
Avez-vous le même comportement lors de "Construire Active Seulement l'Architecture" dans les paramètres de Projet est-il activé? Ce commutateur supprime les doublons de messages d'erreur lors de la construction pour armv6 et armv7, peut-être que c'est lié.
Jetez un oeil à apple de dernière exemple. Lorsque vous téléchargez le code, il existe un fichier lisez-moi en qui son clairement écrit:
Il y a donc un peu de changement dans la sentesting kit. Je ne pense pas qu'il serait utile pour le dépôt d'un bug.
Qui est le comportement attendu. La compilation échouera si l'un des tests échoue et le build va réussir que si tous les tests passent.