Les Tests d'arrêter de travailler sous xcode 8 TEST_HOST erreur
Je veux commencer des tests sous Xcode 8 et ne parviennent pas au début. Mon erreur est:
Ne pouvait pas déterminer l'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 quel est le problème ici? J'ai essayer de nettoyer projet - rien.
Dans le Build Settings
dans ma cible dans 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.
- Avez-vous essayé de supprimer tout sous
/Users/jakubmazur/Library/Developer/Xcode/DerivedData
? - yep, c'était mon premier mouvement - ne fonctionne pas
- Avez-vous essayé de recréer votre
Testing
régime? Ce n'est pas amusant, mais il devrait aider. - Yep, comme je l'ai dit dans la question, tant qu'il dans la même configuration est très bien, quand je change de configuration, j'obtiens le même message d'erreur
Vous devez vous connecter pour publier un commentaire.
Pour une raison quelconque, l "Hôte de l'Application" réglage de l'image ci-dessous a été le problème pour moi. Choisir la bonne cible fixée.
Cela a fini de modifier les valeurs suivantes dans mon xcodeproj:
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 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 que Xcode ensembles:
Ce que vous devez définir:
Ok figure. Il y a un problème avec le nommage des packages. Malheureusement il y a un problème avec Xcode. J'ai été en utilisant différents Noms de Module pour les différentes Configurations. Alors, allez à
Project
->Build Settings
->Product Module Name
Modifier le nom dans toutes les configurations pour le même nom sans espaces.Product Module Name
définie au niveau du projet, qui a été transmise par mon application /TEST_HOST
et remplacé par le test de la cible. J'ai supprimé leProduct Module Name
défini sur le projet et de définir le champ de l'application et le test de la cible, alors que tout a commencé à travailler à nouveau.Product Module Name
mon application ne pouvait plus réactivation de certains objets archivés, parce que la du changement.Mon projet a plusieurs objectifs, donc j'ai dû mettre les Tests de la Cible de l'Application Hôte à "Aucun". (Xcode 9.2)
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 app au sein de la
Intermediates/CodeCoverage/
dossier. (J'ai essayé toutes les autres solutions avec les noms de module etc et ça ne fonctionne pas pour moi.)La question elle-même semble être que Xcode n'a même pas essayer de construire l'application avant de lancer les tests. Cependant une fois Xcode est capable de trouver l'TEST_HOST dans le dossier il sera 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 ont d'avoir la couverture de code:
Accédez à votre unité de test de la cible Paramètres de construction de la et définir
Enable Code Coverage Support
à Pas et 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 construction (CMD+B) ou 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
Intermediates/CodeCoverage/..
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:Je sais, c'est gênant. Mais c'est la seule solution pour le problème jusqu'à présent.
Sous la Cible de Test >> Paramètre de construction >> Test >> Test Hôte vous pouvez le voir le .application fichier qui doit être utilisé pour les tests.
Pour moi **.app nom de fichier est incorrect. Et je l'ai remplacé par **/Build/Intermédiaires/CodeCoverage/Produits/Debug-iphonesimulator/**.app (à vérifier pour la .app de fichiers présents dans ce répertoire).
Test Host
tout à fait et cela a fonctionné pour mon test de la cible et cela a fonctionné. Je l'ai fait pour un cadre, je ne suis pas sûr que cela change les choses.J'ai aussi un projet avec plusieurs régimes, et chacun d'eux s'appuie l'application à l'aide d'un de configuration séparé (Debug, AdHoc, etc.) et un autre nom du produit (MyApp, MyApp_Dev, MyApp_Staging, etc.).
Heureusement, ils ont tous le même nom de Module donc mon test de l'unité de source de fichiers peuvent tout simplement utiliser
@testable import MyApp
, indépendamment de l'actif de régime).Pour résoudre l'erreur, j'ai juste dû faire en sorte que pour chaque régime de l'application de la cible que je voulais tester, les deux correspondants:
$(BUILT_PRODUCTS_DIR)...
)Donc, si #1 est (par exemple):
puis le #2 doit être:
Dans mon cas, mon schéma de la construction de la
AdHoc
configuration avec un nom de produit se terminant avec le-DEV
(développement) suffixe, mais le la cible de test a la recherche d'un hôte nommé se terminant par le suffixe -STG (mise en scène).Je suis tombé sur cette erreur de beaucoup de choses et découvert par la suite qu'il a été causé par la variation de PRODUIT_NOM entre Debug et Release construire des configurations.
Nous faisions cela pour que les versions de Débogage avait un autre nom de l'application une fois installée sur le téléphone (ainsi qu'un autre bundle id nous avons donc pu les installer côte à côte avec l'App Store construit).
Nous est revenue que le changement et ajout d'une nouvelle APP_DISPLAY_NAME réglage de la configuration de build, varié qu'entre les types de builds, et changé l'Info.plist utiliser $(APP_DISPLAY_NAME) au lieu de $(PRODUIT_NOM).
Après avoir fait cela, il est important d'aller dans la cible de test dans le projet et assurez-vous que l'Hôte de l'application " configuration Générale est effectivement mis à votre demande.
Ce que j'ai découvert, c'est que les tests ne fonctionnera pas si vous avez construit et géré de la même cible que vous exécutez les tests contre sur l'appareil/de la carte sim vous sont à l'essai sur.
Par exemple, si je lance les tests par rapport aux objectifs de Production, alors que j'aurais à construire et exécuter la cible de Production sur l'appareil/de la carte sim avant de pouvoir exécuter les tests. Si je n'avais pas le faire, il me donnera la même erreur.
aller à xcode
Preferences
->location
> Données tirées l'Avance -> sélectionnez l'emplacement de générationUnique
C'est un bug dans Xcode droit maintenant. Voir http://www.openradar.me/28095069.
Cesser de Xcode et la suppression de DerivedData dossier à résolu le problème pour moi.
Honte à vous, de la Pomme!