iOS 单元测试在 CocoaPods Google Maps SDK 上失败

Posted

技术标签:

【中文标题】iOS 单元测试在 CocoaPods Google Maps SDK 上失败【英文标题】:iOS unit tests fail on CocoaPods Google Maps SDK 【发布时间】:2016-09-16 15:41:23 【问题描述】:

自从使用 Xcode 8 将我们的代码库迁移到 Swift 3 之后,我们一直无法运行我们的单元测试。该应用程序可以很好地为商店编译和存档,但是当我们尝试运行测试时,它无法构建并抱怨:

未找到适用于 x86_64 架构的 GoogleMapsBase 框架

我检查了我们的 podfile,根据最新的文档,一切似乎都设置正确。

编辑:下面的 Podfile

source 'https://github.com/CocoaPods/Specs.git'

target "Borked" do
    platform :ios, '9.3'
    use_frameworks!
    pod 'GoogleMaps'
    pod 'GoogleAnalytics'

    target "Unit Tests" do
        inherit! :search_paths
    end

    target "UI Tests" do
        inherit! :search_paths
    end

end

【问题讨论】:

你能发布你的 Podfile 吗?您确定要将 Google 地图框架与测试目标相关联吗? 我尝试了多种变体...从主要目标继承,将它们拆分为单独的目标并对依赖项进行硬编码。无论我用哪种方式将它们切开,它仍然失败。 你能更新你的 cocoapods 并通过 Pods install 更新 pods 并检查它吗? 使用 cocoapods 和我正在使用的框架,一切都是最新的。 【参考方案1】:

这样的东西应该可以工作!

source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, '9.3'
    use_frameworks!

    target 'MyApp' do

         pod 'GoogleMaps'
         pod 'GoogleAnalytics'

         target "Unit Tests" do
           inherit! :search_paths
         end

         target "UI Tests" do
           inherit! :search_paths
         end 
    end

或者这个

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.3'
use_frameworks!

target 'MyApp' do

 target 'MyExtension' do

     pod 'GoogleMaps'
     pod 'GoogleAnalytics'

     target "Unit Tests" do
       inherit! :search_paths
     end

     target "UI Tests" do
       inherit! :search_paths
     end
  end 
end

【讨论】:

哦等等 - 第二种形式有效!出于某种原因,我不得不将 Google Maps pod 明确放置到每个目标中。谢谢!

以上是关于iOS 单元测试在 CocoaPods Google Maps SDK 上失败的主要内容,如果未能解决你的问题,请参考以下文章

在使用 Cocoapods 的项目中执行单元测试时,“两个都实现了 Class X”

如何对私有 Cocoapods 库进行单元测试?

使用 Cocoapods 管理多个目标的依赖关系

为啥 Xcode 找不到我的单元测试应用程序?

关于IOS的Cocoapods相关问题

使用 Google MLKit cocoapods 的 iOS Ad-hoc 分发