31 votes

XCTest les erreurs de build pour la cible de test Xcode 5:

J'ai mis en place un XCode 5 iOS 7 projet pour les tests unitaires.

Bien sûr, la configuration de l'unité de tests prennent tellement de temps que j'essaie de garder la foi que cela en vaut la peine. En difficulté pendant des heures sur cette erreur:

ld: building for iOS Simulator, but linking against dylib built for MacOSX file
'/Applications/Xcode5-DP5.app/Contents/Developer/Library/Frameworks/XCTest.framework/XCTest' 
for architecture i386

Toutes les idées sur la façon de résoudre?

21voto

HatAndBeard Points 806

Vérifiez votre Cadre de Recherche de Chemins dans votre test, les paramètres de la cible. Ceux-ci peuvent être endommagés lors de l'ajout de la XCTest Cadre.

L'ajout de XCTest à l'un de mes projets précédées d'un "/" pour les chemins de causer pour ne pas trouver la bonne version.

17voto

eckyzero Points 934

Aucune des réponses ci-dessus, a travaillé pour moi. J'ai trouvé une réponse ici dans un commentaire laissé par Tim Macfarlane.

Pour linker les erreurs à la recherche d'une classe dans votre application... définir les "Symboles Cachés par Défaut" construire le réglage "NON" dans votre application cible. Ce qui rend toutes les classes de votre application à la disposition de votre cible de test automatiquement...

Donc, cela signifie que:

  • Projet de Navigateur > Sélectionnez votre projet
  • Objectifs > Sélectionnez votre Application (pas de Tests)
  • Construire Paramètres > Recherche pour "Symboles Cachés Par Défaut"
  • "Les symboles Cachés Par Défaut" > Changer de "OUI" à "NON"

13voto

Calrion Points 1088

J'ai eu le même problème; le problème (pour moi, au moins), est que l' FRAMEWORKS_SEARCH_PATHS construire indiqué, le SDK cadres dossier après le développeur principal de cadres dossier.

Les cadres fourni avec Xcode ont trois compilations séparées: l'une pour OS X, un pour iOS (périphérique), et un troisième pour le Simulateur iOS. L'OS X de construire est le principal promoteur du dossier, les deux autres étant la vertu de leurs dossiers de plate-forme. Le hic, c'est que si vous ne spécifiez pas à rechercher dans le dossier SDK premier (qui sont dans les dossiers de plate-forme), Xcode (ou plus correctement, l'éditeur de liens) recherche l'OS X construire la première et de produire de l'erreur que vous voyez.

La solution est simple, mettre:

FRAMEWORK_SEARCH_PATHS = $(SDKROOT)/Developer/Library/Frameworks $(inherited)

dans vos paramètres de construction. Si vous mettez les paramètres de construction dans le fichier de projet (je ne le recommande pas, mais c'est une autre question pour un autre jour), il est nommé "Cadre chemins de la recherche."

REMARQUE: Parfois, Xcode est un peu lent à comprendre; vous aurez probablement besoin de supprimer votre build le dossier (mieux qu'un simple nettoyage) pour que cela prenne effet.

6voto

Aist Marabu Points 71

Ont le même problème après la conversion de tests à partir de SenTestCase à XCTestCase. Revenant cadre dirs correction d'un problème:

"$(SDKROOT)/Developer/Library/Frameworks" (non-recursive)
"$(DEVELOPER_LIBRARY_DIR)/Frameworks" (non-recursive)

5voto

Ryan H. Points 437

Donc, pour moi, ce qui me manquait après avoir essayé tout le reste de ce poste, a été:

D'Autres Drapeaux De L'Éditeur De Liens:

-framework XCTest

Je suis actuellement en utilisant Xcode 6.0 (avec l'iOS 8 SDK), donc je suis surpris de voir que le menu "Edition > Refactor > Convertir XCTest..." l'option n'ajoute pas automatiquement.

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