36 votes

La mise en œuvre de Tests Unitaires avec le SDK de l'iPhone

J'ai donc suivi ce tutoriel pour 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: alt text

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%!! Si quelqu'un pouvait aider je lui en serais très reconnaissant!

Merci

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: alt text est de mon test de construire à l'aide 3.2.1. C'est à partir d'une ancienne version (3.1.4): alt text. (Le projet pour a été inchangé).

Edit: URL de l'Image mise à jour.

5voto

umiti Points 51

Double-cliquez sur 'Exécuter le script' sous 'Cibles'/'à Votre script nom de la cible", puis entrez

# Exécuter les tests unitaires dans ce test bundle. 
"${SYSTEM_DEVELOPER_DIR}/Outils/RunUnitTests" 1> /tmp/RunUnitTests.hors

Fondamentalement, vous devez ajouter

1> /tmp/RunUnitTests.hors

pour ce qui est déjà là

1voto

Thomas Joulin Points 3425

Avez-vous essayé de définir la configuration de la compilation de "Debug" pour le cas de test ?

je l'ai fait, comme indiqué à http://nothing2fancy.com/2009/08/04/failed-tests-for-architecture-i386-gc-off/ et cela a fonctionné

1voto

Joe Yang Points 629

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.

1voto

Akku Points 2141

Menu: Projet --> Nouvelle Phase de construction --> Nouveau 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.

0voto

lufutu Points 1

Je ne sais pas il une bonne voie ou pas, mais c'est un travail pour moi.

Dans l'Onglet Général de l'info, Test, j' ajouter ma principale de l'application exécutable cible comme une dépendance directe.

Et pas d'erreur pour "i386" (GC OFF)".

Bonne chance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X