Récemment, j'ai commencé à écrire un scénario de test pour une ancienne bibliothèque statique. J'ai chargé la bibliothèque dans Xcode 5. La bibliothèque statique étant ancienne, je dois ajouter manuellement TestProject avec Test Target.
Lorsque j'essaie "Produit -> Test", il lance l'émulateur et la console affiche l'erreur suivante
La série de tests dans /xxx/xxx/xxx/StaticLibTest.xctest n'a pas pu être Chargée, car une erreur imprévue s'est produite: Erreur Domaine = NSCocoaErrorDomain Code = 3587 "Le lot" StaticLibTest.xctest " n'a pas pu être chargé car des ressources endommagées ou manquantes sont nécessaires. " (dlopen_preflight (/xxx/xxxx/xxx/Debug-iphonesimulator/StaticLibTest.xctest/StaticLibTests): aucune image appropriée trouvée.
Je ne sais pas pourquoi cette erreur survient.
Toute aide pour indiquer la bonne direction sera vraiment appréciée.
J'ai trouvé la réponse par moi-même.
Vos paramètres de construction -> Les architectures doivent être identiques pour la bibliothèque et le projet de test.
Architectures -> Architectures = Architectures de Standrad (armv7, armv7s, Arm64) $ (ARCHS_STANDARD)
La liaison de votre projet test -> Le type Mach-O devrait être groupé
Liaison -> Type Mach-O = Bundle
Construire et exécuter des tests. C'est tout
Si d'autres lecteurs rencontrent cette erreur et que vous utilisez Carthage pour ajouter un cadre, assurez-vous que la phase Copy Files
se fait avec Destination: Frameworks .
Si vous ajoutez accidentellement les infrastructures à une phase Copy Files
avec une cible différente (autre que Frameworks) ou Copy Bundle Resources
, le message d'erreur d'ensemble endommagé/non valide sera également généré.
J'avais un problème similaire. Pour moi, le problème était un framework de tests unitaires qui était un framework dynamique, mais non copié sur le bundle xctest.
La solution consistait à ajouter une phase "Copier les fichiers" à ma cible de test unitaire, à définir sa destination sur "Frameworks" et à ajouter mon framework en tant que fichier d'entrée.
Pour moi, ce problème était dû au fait que le paramètre de construction "Cible de déploiement iOS" était différent dans ma cible de test de mon application principale. Une fois que je leur ai fait la même chose le problème est parti.
Vérifiez si vous avez oublié d’ajouter votre cible de test à votre Podfile
:
target 'MyProject' do
# Add test target
target 'MyProjectTests' do
inherit! :search_paths
end
pod 'SomePodLibrary'
end
Le fait de désactiver la configuration du pod pour la cible de test a résolu le problème, car cela avait quelque chose à voir avec la configuration du pod qui le gênait.
Pour moi, nous venions d'activer le droit à CloudKit. Pour une raison quelconque, la construction a éclaté.
Avait un problème similaire:
FrameworkA imports FrameworkB
FrameworkA-Tests importe également FrameworkB
Le problème résolu était de supprimer (commenter) toutes les références à FrameworkB in FrameworkA-Tests , puis d'exécuter les tests une fois et de ne pas commenter les références.
FrameworkA-Tests importe maintenant FrameworkB et fonctionne correctement.