Xcodeunit testing用Cocoapods
在过去的几天里,我一直在用这种方式将我的头撞在墙上,但是尽pipe有多个Google / SO / Githubsearch,我找不到解决我遇到的问题的办法!
我所要做的就是为我的应用程序创build一些使用Firebase窗格的unit testing。
我正在使用Xcode 7.3.1和Cocoapods 1.0.1。 更新:问题仍然与Xcode 8.0
有了这个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
在我的XCTest类中,
缺less必需的模块“Firebase”
错误@ @testable import MyApp
或者用这个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
testingbuild立,但我的控制台乱七八糟的警告,例如:
Class <-FirebaseClassName->在… MyApp …和… MyAppTests中实现…其中的一个将被使用。 哪一个是未定义的
我遇到过同样的问题。 我通过将pod 'Firebase'
移动到我的testing目标来解决这个问题。 将您的Podfile更改为:
platform :ios, '9.0' use_frameworks! inhibit_all_warnings! target 'MyApp' do pod 'Firebase/Auth' pod 'Firebase/Database' pod 'Firebase/Storage' target 'MyAppTests' do inherit! :search_paths pod 'Firebase' end end
问题在于,在CocoaPods为设置生成自己的值之后,Firebase在Headersearchpath中做了一些特殊的事情,所以CocoaPods不会在这个变化中拿起来将其传递给testing目标。 你可以通过以下两种方法解决这个问题:
-
在文件导航器中find
MyAppTests.<configuration>.xcconfig
,并将以下内容添加到HEADER_SEARCH_PATHS
:${PODS_ROOT}/Firebase/Analytics/Sources
[*] -
在“生成设置”中find“ 标题searchpath ”的设置,并将与选项1相同的值添加到列表中。 你不应该把它设置为recursion。
*根据AKM的评论,在版本3.14.0中更改为${PODS_ROOT}/Firebase/Core/Sources
尝试将inheritance更改为:complete
,如下所示:
target 'MyAppTests' do inherit! :complete end
重要的是,它允许任何人检查你的回购只是做一个像往常一样的pod update
,而不必复制.xcconfig
文件或其他hackery只是为了build立。
对我来说,解决scheme是将cocoapods更新到版本1.1.0.rc.2。
sudo gem install cocoapods --pre
我有一个类似的问题。 从你的问题来看,我将MyApp.<configuration>.xcconfig
文件的内容复制到MyAppTests.<configuration>.xcconfig
文件中。 我清理并build立了testing,并且工作。
仅在“ 生成设置” – >“ 标题searchpath ”下向您的testing目标添加“$ {PODS_ROOT} / Firebase / Core / Sources”
问题logging在这里的Firebase项目中:
https://github.com/firebase/firebase-ios-sdk/issues/58
有一个解决方法:
仅在“生成设置” – >“标题searchpath”下向您的testing目标添加“$ {PODS_ROOT} / Firebase / Core / Sources”
但是这也是通过升级到CocoaPods 1.4.0来解决的。
在我写这篇文章的时候(2017年11月),cocoapods 1.4.0还在testing阶段,所以要安装它,你需要明确地要求beta:
gem install cocoapods --pre
这解决了运行我的testing的问题。