Xcode Unit-Tests mit Cocoapods
Ich habe schlug meinen Kopf gegen eine Wand, mit dieser für die letzten paar Tage, aber trotz mehrerer Google/SO/Github durchsucht, ich kann nicht finden, eine Auflösung der Probleme, die ich habe!
Alles, was ich bin versucht zu tun ist erstellen unit-tests für meine app, die Gebrauch macht von FB-pods.
Ich bin mit Xcode 7.3.1 & Cocoapods 1.0.1. Update: Problem bleibt mit Xcode 8.0
Mit diesem podfile:
platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!
target 'MyApp' do
pod 'Firebase'
pod 'Firebase/Auth'
pod 'Firebase/Database'
pod 'Firebase/Storage'
target 'MyAppTests' do
inherit! :search_paths
end
end
In meinem XCTest Klasse bekomme ich
Fehlende erforderliche module 'FB'
Fehler bei @testable import MyApp
Alternativ mit diesem podfile:
platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!
def common_pods
pod 'SwiftyTimer'
pod 'Firebase'
pod 'Firebase/Auth'
pod 'Firebase/Database'
pod 'Firebase/Storage'
end
target 'MyApp' do
common_pods
end
target 'MyAppTests' do
common_pods
end
Tests bauen, aber meine Konsole ist übersät mit Warnungen z.B.:
Klasse <-FirebaseClassName-> wird umgesetzt in beide ...MyApp... und
...MyAppTests... Einer der beiden wird verwendet. Die eine ist undefiniert
InformationsquelleAutor der Frage doovers | 2016-07-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche Problem. Ich löste es, indem Sie
pod 'Firebase'
auf mein test target. Ändern Sie Ihre Podfile:InformationsquelleAutor der Antwort Mackarous
Das Problem ist, dass FB macht etwas besonderes mit dem Header-Suchpfade nach CocoaPods erzeugt seinen eigenen Wert für die Einstellung so CocoaPods nicht abholen auf diesem ändern, um zu tragen es über die test-target. Sie können dies lösen, gibt es zwei Möglichkeiten:
Suchen Sie
MyAppTests.<configuration>.xcconfig
im Datei-navigator und fügen Sie die folgendenHEADER_SEARCH_PATHS
:${PODS_ROOT}/Firebase/Analytics/Sources
[*]Finden Sie die Einstellung für Header Search Paths in den Build-Einstellungen und fügen Sie denselben Wert wie in option 1, um der Liste. Sie sollten nicht brauchen, um es als rekursiv.
* Als pro-AKM-Kommentar, änderte sich dieses
${PODS_ROOT}/Firebase/Core/Sources
in der version 3.14.0InformationsquelleAutor der Antwort Will
Versuchen Sie, die erbschaft zu
:complete
:Wichtiger ist es erlaubt jemand anderes die überprüfung Ihrer repo-einfach ein
pod update
wie üblich ohne kopieren.xcconfig
Dateien oder andere Hack einfach zu bauen.InformationsquelleAutor der Antwort Andy Chou
Das problem ist aufgenommen in die Feuerstellung Projekt hier:
https://github.com/firebase/firebase-ios-sdk/issues/58
Gibt es einen workaround:
aber das ist auch behoben, indem ein Upgrade auf CocoaPods 1.4.0 oder höher, ist eine bessere Lösung.
In der Zeit, die ich dies Schreibe (November 2017) cocoapods 1.4.0 ist noch in der beta, also es zu installieren, müssen Sie explizit die Anfrage der beta:
Diese und dann tut eine
pod install
löste das problem mit meinen tests.InformationsquelleAutor der Antwort JosephH
Die Lösung für mich war die update cocoapods auf version 1.1.0.rc.2.
sudo gem install cocoapods --pre
InformationsquelleAutor der Antwort doovers
Drei Schritte vor, ich könnte diese Arbeit:
CocoaPods : 1.5.0
Swift 4
FB : 4.13.0
Schritt 1:
Stellen Sie sicher, fügen Sie die folgende Ziel-block in Ihre podfile.
Schritt 2:
Innerhalb der YourAppTests Projekt-Navigator Build-Einstellungen Registerkarte. Finden Sie die Header Search Path-Zeile, und fügen Sie zum Debuggen die folgende Zeile
Schritt 3:
Im terminal ausführen:
InformationsquelleAutor der Antwort Dennis
Beispiel
InformationsquelleAutor der Antwort Kanika Sharma
Ich hatte ein ähnliches problem. Formuliert in Bezug auf Ihre Frage, kopierte ich den Inhalt meiner
MyApp.<configuration>.xcconfig
- Datei auf meinemMyAppTests.<configuration>.xcconfig
- Datei. Ich gereinigt und eingebaut, die tests, und es funktionierte.InformationsquelleAutor der Antwort Jason
Hinzufügen "${PODS_ROOT}/FB/Core/Sources" den Tests Ziel nur unter
Build-Einstellungen -> Header Search Paths
InformationsquelleAutor der Antwort Karthick Vadivel
Als @ erwähnt ein Problem rund um Header Search Paths nach CocoaPods-installation.
Ich habe ein Projekt mit mehreren Zielen, wo pod 'FB', eingebettet in separates Modul, sagen wir
MyProject-Shared
. FB-pod bei "Podfile" installiert nur für 'MyProject-Gemeinsame' Ziel. Andere Module verwenden möchte "MyProject-Shared' kann nicht compiliert werden wegen Fehler:'fehlende erforderliche module "FB" '
Den trick in meinem Fall war das hinzufügen folgender fehlenden header-Suchpfad bei jeder Ziel ist Build-Einstellungen verweisen, auf Analytics-Framework:
"${PODS_ROOT}/Firebase/CoreOnly/Sources"
Bitte siehe Bild unten:
Hoffe, es wird sparen Sie Ihre Zeit.
InformationsquelleAutor der Antwort Stas Baranovskiy