web-dev-qa-db-fra.com

Erreur de test d'unité Xcode 8: impossible de déterminer l'identificateur d'ensemble pour TEST_HOST

J'ai un projet Xcode qui ne semble pas vouloir compiler ma cible principale de l'application pour générer un produit avant de tenter de l'utiliser comme hôte d'application lors de l'exécution de tests unitaires. De Xcode, je tente d'exécuter des tests unitaires avec ⌘ + U

J'ai immédiatement un dialogue qui dit: Could not determine bundle identifier for [app name] TEST_Host

(Remplacez [nom de l'application] par le nom réel de l'application)

Cette boîte de dialogue inclut également un chemin d'accès à mon répertoire de produits de données dérivés local: "/Users/***/Library/Developer/Xcode/DerivedData/Lowes-aymgdtrbrarmcidtkxoqxeafmxmj/Build/Products/Debug-iphonesimulator/[app name]"

J'ai des tests unitaires configurés avec le paramètre TEST_Host pointant sur $(BUILT_PRODUCTS_DIR)/[app name].app/[app name]. La cible de test unitaire a une dépendance de cible par rapport à la cible principale de l'application. Le paramètre BUNDLE_LOADER est défini sur $(TEST_Host). Si je compile d'abord la cible principale de l'application en appuyant sur ⌘ + B, la structure de répertoires et l'application appropriées sont créées, puis sur ⌘ + U bootstraps et exécute correctement les tests unitaires. Si je nettoie et réessaye, cela échoue immédiatement. Je n'ai jamais rencontré ce problème auparavant, et il semble avoir surgi après la conversion de l'application en Swift 3. Cela peut ou non avoir une incidence sur le problème, pas vraiment sûr.

J'ai lu plusieurs réponses ici et essayé beaucoup de suggestions, mais elles ne semblent pas avoir le même problème fondamental que moi. Pour la plupart des gens, il semble que le réglage de l'application hôte sur Aucun et le retour à la cible principale résolvent le problème. Ce n'est pas le cas pour moi.

J'ai essayé de nouvelles caisses, en reconvertissant l'application et les cibles de test en Swift 3, ainsi que le dossier de nettoyage/nettoyage standard/les données dérivées. Aucun de ceux-ci ne semble avoir aucun effet.

Quelqu'un d'autre a-t-il rencontré ce problème et trouvé une solution?

11
Mark Struzinski

J'ai trouvé une résolution pour cela. Cela peut ne pas s'appliquer à tous les scénarios, mais cela corrige le mien. Dans les principaux paramètres du projet de l'onglet Info, il existe une option permettant de sélectionner la configuration à exécuter lors du démarrage de la génération en ligne de commande. Le mien était sur le point de libérer. Faire basculer cela vers Debug a corrigé mon problème.

 Xcode Project Settings, Info Tab

18
Mark Struzinski

Supprimer le Test Host complètement du Build Settings de votre cible de test résoudrait ce problème

2
bartosss

Xcode 9.2, Swift 4

Dans mon cas, le "Types d'URL" que j'avais précédemment ajouté dans Info.plist, puis supprimé à nouveau d'Info.plist a laissé les traces dans l'onglet INFO de cette cible. J'ai donc dû le supprimer manuellement à nouveau.

Il ne permet pas de supprimer des types d'URL à partir de l'onglet Info, alors revenez dans le fichier Info.plist et supprimez-le à nouveau.

0
Naishta

Il semble que le paramétrage de "Bundle Loader" dans la configuration de la version résolve le problème.

Je ne comprends pas très bien pourquoi, mais pour moi cette erreur est toujours apparue dans notre système CI, où nous exécutons la construction depuis la ligne de commande. Dans les paramètres du projet, nous avons défini "Utiliser Valider pour les constructions en ligne de commande". Par conséquent, je pense que même si nous avons défini la configuration de construction sur Debug via des arguments de ligne de commande, xcodebuild ignore l’argument de configuration et utilise partiellement les paramètres "Release". Il s’agit peut-être d’un bogue avec le système xcodebuild (je suppose que cela mérite un radar), si quelqu'un peut trouver une meilleure explication de la raison pour laquelle cela résout le bogue, j'aimerais en entendre parler.

J'espère que cela t'aides.

0
Daniel Lahyani

Mon problème était que le paramètre Info.plist File dans Build Settings était inexistant. La mise à jour du paramètre dans le fichier de plist droit a résolu le problème.

0
Paul Beusterien

XCode 9.4.1, Swift 4

Nettoyer les données dérivées, quitter Xcode, relancer le Xcode, a été décisif pour moi cette fois-ci.

0
Naishta