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
我不喜欢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节省了我一天时间!