45 votes

Les tests cessent de fonctionner sous l'erreur xcode 8 TEST_HOST

Je veux commencer des tests sous Xcode 8 et ne parviennent pas au début. Mon erreur est:

Impossible de déterminer identifiant de lot pour MyProjectTest de TEST_HOST: "/Users/jakubmazur/Library/Developer/Xcode/DerivedData/MyProject-ejeepybggxvekxajlyngopeahiex/Build/Intermediates/CodeCoverage/Products/Testing-iphonesimulator/MyProject.app"

Aucune idée de ce qu'est le problème ici? J'ai essayer de nettoyer projet - rien. Dans l' Build Settings dans ma cible en Packaging - je changer de Produit Identifiant de lot dépend de la configuration dans mon schéma. Il peut avoir quelque chose à faire avec ça, mais pas sûr.

-- EDIT

Ok figure comment faire pour limiter le problème. Quand j'ai changer des paramètres dans le régime d'utilisation Configuration de Build Debug au lieu de Testing semble fonctionner, mais j'ai besoin de configuration pour le test.

62voto

masty Points 514

Pour une raison quelconque, le paramètre "Application hôte" dans l'image ci-dessous était le problème pour moi. La sélection de la bonne cible a résolu ce problème.

Cela a fini par modifier les valeurs suivantes dans mon xcodeproj:

  • BUNDLE_LOADER = "$ (TEST_HOST)";
  • TEST_HOST = "$ (BUILT_PRODUCTS_DIR) /myappname.app/myappname";

19voto

DenHeadless Points 427

Il y a un plus de cas que vous pourriez rencontrer. Si vous avez besoin de différents noms de produits pour cible principale(par exemple de Débogage, la mise en scène, Production) et essayez d'utiliser Xcode Application Hôte sélecteur, il va écrire des valeurs incorrectes pour TEST_HOST paramètre de construction.

Et tout message d'erreur que vous voyez est d'environ identifiant de lot en configuration Debug, Xcode effectivement se plaint TEST_HOST dans la Libération de configuration.

Je l'ai corrigé en modifiant manuellement TEST_HOST paramètre de construction. Par exemple, si vous avez le Nom du produit sur le principal objectif fixé à AppDebug en Debug et AppRelease dans la Version de la configuration de votre TEST_HOST devraient être les suivants:

Ce Xcode ensembles:

$(BUILT_PRODUCTS_DIR)/AppDebug.app/AppDebug

Ce que vous devez définir:

Debug configuration: $(BUILT_PRODUCTS_DIR)/AppDebug.app/AppDebug
Release configuration: $(BUILT_PRODUCTS_DIR)/AppRelease.app/AppRelease

15voto

mevdev Points 421

Mon projet a de nombreux objectifs et j'ai donc dû définir l'application hôte de la cible de tests sur 'Aucune'. (Xcode 9.2)

entrez la description de l'image ici

4voto

JanBrinker Points 465

Il semble qu'il y a plusieurs bugs dans Xcode8 qui peuvent être en cause. Toutefois, j'ai trouvé une solution pour le cas où Xcode essaie de trouver le TEST_HOST application au sein de l' Intermediates/CodeCoverage/ le dossier. (J'ai essayé toutes les autres solutions avec les noms de module etc et ça ne fonctionne pas pour moi.)

Le problème semble être que Xcode n'a même pas essayer de construire l'application avant de lancer les tests. Cependant, une fois que Xcode est capable de trouver l'TEST_HOST dans le dossier qu'il va reconstruire lors du lancement de l'tests. C'est ainsi que nous pouvons trouver notre chemin autour de lui.

Deux solutions possibles:

Si vous n'avez pas à avoir à avoir la couverture de code: Accédez à votre unité de test de la cible de Paramètres de construction et de définir Enable Code Coverage Support de N et de désactiver la couverture de code dans votre construction du dispositif de test. (Modifier le schéma, sélectionnez Test sur la gauche). Si vous souhaitez exécuter vos tests unitaires et toujours obtenir que TEST_HOST message d'erreur, essayez de construire (CMD+B) ou de l'exécution de votre application. Ensuite, vous pouvez exécuter vos tests sans erreur. Voilá.

Si vous avez besoin de la couverture de code: Vous pouvez suivre une certaine solution de contournement pour obtenir que l' Intermediates/CodeCoverage/.. le dossier rempli. Une fois que l'application est à l'intérieur de Xcode va reconstruire pour les tests unitaires comme il se doit, mais vous avez besoin pour l'obtenir une fois remplies. C'est comment vous le faites:

  • Dans l'application, et le test de l'unité de sélection de cible Pas de "Permettre la Couverture de Code de Support"
  • Puis dans l'onglet "Général" de l'unité cible de test ensemble, le test de l'application hôte à "None"
  • Décochez la case "Permettre de tester les API Hôte"
  • Essayez de lancer les tests unitaires. Xcode va maintenant au moins essayer de construire. Si Xcode donne une erreur de compilation (parfois Xcode se plaint Cocoapods ici, dans mon expérience), essayez de créer encore une fois.
  • Re-cochez la case "Permettre de tester les API Hôte" à nouveau dans le Test de l'Unité cible
  • Essayez d'exécuter les tests à nouveau comme ci-dessus. Xcode devrait se plaindre.
  • Réglez maintenant le test de l'hôte de l'application.
  • Maintenant, les tests doivent passer à travers. (Jusqu'à ce que vous exécutez un propre, alors vous allez avoir à refaire ces étapes..)

Je sais, c'est gênant. Mais c'est la seule solution pour le problème jusqu'à présent.

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