web-dev-qa-db-fra.com

Xcode 10 - UITests - Raison: image non trouvée

J'essaie d'exécuter les UItests pour mon application, mais elle se bloque dès son chargement. Voici l'erreur.

2018-09-29 16:19:49.577151+1000 xxxUITests-Runner[6007:69633] (dlopen_preflight(/Users/Acc/Library/Developer/Xcode/DerivedData/xxx-bjuwemcifadxhlhgojgfktmmades/Build/Products/Debug-iphonesimulator/xxxUITests-Runner.app/PlugIns/xxxUITests.xctest/xxxUITests): Library not loaded: @rpath/libswiftContacts.dylib
  Referenced from: /Users/Acc/Library/Developer/Xcode/DerivedData/xxx-bjuwemcifadxhlhgojgfktmmades/Build/Products/Debug-iphonesimulator/xxxUITests-Runner.app/PlugIns/xxxUITests.xctest/Frameworks/MapboxGeocoder.framework/MapboxGeocoder
  Reason: image not found)

J'utilise CocoaPods (1.6.0.beta.1) pour installer mes frameworks. J'utilise Xcode10 avec Swift 4.2 et IOS 12. Git est utilisé comme contrôle de version avec d'autres développeurs (il y a peut-être des conflits?).

Mon application cible fonctionne parfaitement, à la fois sur un simulateur et sur un vrai téléphone, tout comme mes tests unitaires. Mais mon objectif UITest échoue dès qu'il se lance. Ce problème se produit à la fois sur un simulateur et sur une vraie machine.

Il y a eu de nombreux articles sur la question auparavant, mais aucun ne m'a aidé jusqu'à présent. J'ai eu 2 occurrences isolées auparavant, la première fois que j'ai résolu en ajoutant des dépendances dans mon fichier pod pour l'unité UITest, et la deuxième fois en supprimant simplement ma cible et en copiant et collant les classes dans la nouvelle cible (non constructif) , mais en dernier recours). Je peux faire la même chose cette fois également, mais c'est un peu une perte de temps et je crains que cela ne se reproduise à l'avenir.

Voici ce que j'ai fait jusqu'à présent:

  1. Nettoyer le dossier des builds Xcode et supprimer les données dérivées, IOS journaux de périphérique et dossiers de données utilisateur.

  2. Xcode, Mac redémarré, ainsi que mon appareil et mes simulateurs, et référentiel recloné, et mise à jour et installation du pod

  3. Avoir "toujours incorporé Swift bibliothèques standard" comme oui

  4. Vérifié que mon application cible est correcte

  5. Assurez-vous que le cadre offensant (MapboxGeocoder.framework) est inclus dans les cadres de pods intégrés

17
qunayu

Donc après 5 jours, j'ai réussi à résoudre mon propre problème.

Je l'ai résolu en déplaçant ma cible UITests hors du champ d'application de mon application principale dans Podfile.

De:

target 'App' do
    use_frameworks!

    pods 'Firebase'

    target 'AppUITests' do
        pods 'Testingpod'
    end
end

À:

target 'App' do
    use_frameworks!

    pods 'Firebase'
end

target 'AppUITests' do
    pods 'Testingpod'
end
36
qunayu

A trouvé une autre solution suggérée dans le problème des Cocoapods.

Comme mon projet est un framework, le test n'a donc pas d'application Host.

Podfile modifié

target 'framework' do
    use_ frameworks!
    pods my_dependencies
    target 'framework_tests' do
        inherit! :search_paths
    end
end

À

target 'framework' do
    use_ frameworks!
    pods my_dependencies
    target 'framework_tests'
end

https://github.com/CocoaPods/CocoaPods/issues/8139

3
Evan