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目标。 你可以通过以下两种方法解决这个问题:

  1. 在文件导航器中findMyAppTests.<configuration>.xcconfig ,并将以下内容添加到HEADER_SEARCH_PATHS

    ${PODS_ROOT}/Firebase/Analytics/Sources [*]

  2. 在“生成设置中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的问题。