CocoaPods:在多target中安装相同pod的优雅解决方案

Xcode7中令人激动的功能之一就是能够进行原生UI测试(感谢苹果),所以我在开发新的Xcode 7 / Swift 2项目时,我把重点放到了这上面来。在单元测试的过程中,QuickNimble 用起来真的很舒服,所以我也想把这些类库用在UI测试中。

使用CocoaPods安装Quick和Nimble很简单,然而问题是,你仅仅只是想把Quick和Nimble安装到测试的target中。

一个恶习但是有效的解决方案

最初的办法是将Quick和Nimble分别放在Podfile的两个target中:

# Podfile

platform :ios, '9.0'

use_frameworks!

# My other pods

target 'MyTests' do
    pod 'Quick', '0.5.0'
    pod 'Nimble', '2.0.0-rc.1'
end

target 'MyUITests' do
    pod 'Quick', '0.5.0'
    pod 'Nimble', '2.0.0-rc.1'
end

我不喜欢Quick和Nimble在这里重复两次,每次更新版本的时候,我都要修改两个地方。

错误的方案

后来我google了一下,发现我需要使用link_with,我自认为link_with下方的所有库都将应用到我所指定的target中:

# Podfile

platform :ios, '9.0'

use_frameworks!

# My other pods

link_with 'MyTests', 'MyUITests'

pod 'Quick', '0.5.0'
pod 'Nimble', '2.0.0-rc.1'

结果我完全错误理解了link_with以及它的工作原理。最后除了test targets,Quick和Nimble同时也安装到了我app的主target中。

优雅的解决方案

于是我直接联系了大神-CocoaPods的核心开发者@NeoNacho,后来我使用了他提示的优雅方案:

# Podfile

platform :ios, '9.0'

use_frameworks!

# My other pods

def testing_pods
    pod 'Quick', '0.5.0'
    pod 'Nimble', '2.0.0-rc.1'
end

target 'MyTests' do
    testing_pods
end

target 'MyUITests' do
    testing_pods
end

我忘记了Podfile其实是一个ruby文件!感谢@NeoNacho节省了我一天时间!


原文地址

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值