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

xiaoxiao2021-02-28  18

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

我不喜欢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' 123456789101112

结果我完全错误理解了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 1234567891011121314151617181920

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

转载请注明原文地址: https://www.6miu.com/read-2300256.html

最新回复(0)