Je travaille en swift sur Xcode et par défaut, il crée un fichier de test qui fait référence à XCTest.
Lorsque je définis l'appartenance cible à mon projet principal, cela provoque cette erreur
Impossible de charger le module sous-jacent pour XCTest
Si cette appartenance à la cible n'est pas définie, les tests s'exécutent correctement et tout fonctionne correctement.
PS: je suis nouveau pour Swift et c'est probablement une question stupide (s'il vous plaît, éclairez-moi)
Réponses:
Le projet principal n'est pas lié au framework XCUnit. Vous devez créer une cible de test distincte pour votre projet, s'il n'en existe pas déjà, et ajouter vos fichiers source de test à cette cible.
Si vous travaillez sur un modèle de projet iOS , sélectionnez
iOS > Test > iOS Unit Testing Bundle
.Si vous travaillez sur un modèle de projet OS X , sélectionnez
OS X > Test > OS X Unit Testing Bundle
.la source
Vérifiez que le fichier en question n'est pas dans la cible principale mais uniquement dans la cible de test. Seule la cible de test aura ce cadre à importer.
la source
Vous venez d'ajouter votre fichier / classe de tests dans la cible principale et non dans la cible de test par erreur. Aussi simple que cela.
Solution:
1) Supprimez le fichier de test de la liste "Compiler les sources" dans l'onglet "Build Phases" de la cible principale
2) Ajouter le même fichier dans "Compile Sources" sur l'onglet "Build Phases" pour la cible de test
Il doit résoudre le problème
la source
J'obtiens cette erreur si je crée une cible de framework dynamique macOS, qui est liée à
XCTest.framework
(la cible est une cible de framework, pas une cible de test!).Dans ce cas, le problème est résolu en ajoutant
aux "Paramètres de construction / Chemins de recherche du cadre" du projet.
la source
$(PLATFORM_DIR)/Developer/Library/Frameworks
au cas où vous auriez plusieurs versions de Xcode installées sous des noms différents (par exemple, versions release et beta).Après beaucoup de dépannage et de rebond dans les pages de débordement de pile comme celle-ci, j'ai réussi à trouver un détail qui n'était pas mentionné sur les autres pages de dépannage de test d'unité iOS.
Si votre projet utilise CocoaPods, assurez-vous d'inclure votre cible de test imbriquée dans la cible de votre application principale. Votre fichier pod peut ne pas l'inclure si vous avez créé votre cible de test après son exécution
pod init
. Votre fichier pod devrait ressembler à ceci:N'oubliez pas de sauvegarder votre fichier pod et de l'exécuter
pod install
après cela.J'espère que ça aide!
la source
C'est peut-être un peu tard mais ce que vous devez faire est:
Cliquez sur Fichier> Nouveau> Cible> Bundle de tests unitaires iOS.
Et puis ajoutez vos tests là-dedans. Cela a fonctionné pour moi. Le problème était que je n'avais pas sélectionné créer des tests unitaires lors de la création de mon projet. J'espère que cela aide quelqu'un.
la source
Ce problème se produit deux fois dans votre projet.
1: Réponse:
Allez dans le fichier Cliquez sur Fichier.
Ensuite, vous voyez la première option Nouveau Cliquez dessus.
Après avoir cliqué dessus, vous voyez une option, cliquez sur la cible.
Et puis, dans la barre de recherche, le bundle de tests unitaires IOS et l'ajout d'un problème sont résolus.
si le compilateur ne peut pas vous donner la permission d'ajouter ceci, essayez la deuxième méthode quand est donné ci-dessous.
2. Répondez au problème de CocoaPod:
Accédez au produit Cliquez sur le produit.
Cliquez sur nettoyer ou appuyez sur cmd + k.
Problème résolu.
la source
Bien que la réponse acceptée résout ce problème la plupart du temps, il existe un autre moyen de rencontrer cette erreur.
Si vous vous êtes déjà assuré que:
Comme souligné par @pwc @ nick-n et d'autres
ClassTest.swift
fichier pour l'appartenance à la cible en s'assurant qu'il est uniquement attaché à la cible de test.ClassTest.swift
n'est pas visible sous la cible principale de votre application> Sources de construction> Sources de compilationVoici ce que vous pouvez vérifier d'autre:
dans votre
.podspecs
dossierAssurez-vous que votre
source_files
n'inclut pas directement ou indirectement le répertoire de test.par exemple :
Notez que
Classes/**/*.{swift}
tout inclut tout ce qui remplace le fait que le répertoireMyPodProjTests
doit être exclu.Solution:
Remarque: il s'agit d'un cas extrêmement complexe et d'une erreur complètement humaine, mais je pensais que cela mériterait d'être souligné.
la source
s.source_files
. Merci!Assurez-vous que l'appartenance cible est cochée pour tous les modules lorsque le cadre de test est sélectionné. Vous pouvez afficher l'option d'appartenance cible en sélectionnant Affichage-> Utilitaires-> Afficher l'inspecteur de fichiers
la source
Dans mon cas, je faisais les tests pour un pod privé, donc dans le podspec c'était comme:
Mais dans le Podfile, j'ai oublié d'apporter la spécification de test, en tant que telle:
la source
J'ai fait tout ce qui précède, mais je n'étais toujours pas autorisé à accéder aux méthodes que je voulais tester. Mais avant d'écrire un cas de test, j'ai construit le projet une fois, puis les méthodes étaient accessibles à tester. Alors essayez-le et faites-moi savoir si cela a résolu un problème.
la source
J'ai eu le même problème et la solution pour moi était de:
J'espère que cette réponse vous aidera.
PS: une dernière réflexion dans ma cible de test dans les paramètres de construction, j'ai dû vérifier ces propriétés qui n'étaient pas configurées correctement:
la source
Tout comme @Alfishe mentionné ci-dessus:
Vous devez supprimer les fichiers de test
Compiler Sources
sousBuild Phases
Comme indiqué ci-dessous
la source
Vérifiez l'appartenance cible de votre classe de test.
la source
Le problème est que
Unit Testing Bundle
la cible doit être créée au préalable[Comment l'ajouter]
la source