在构建测试目标期间未导入 Cocoapod
Cocoapod not being imported during build for test target
我会先说这个解决方案可能非常简单,但我已经尝试了几个小时来解决这个问题,我觉得它很接近,但仍然有问题。
我正在创建一个 Cocoapod,它有一些其他 pods 作为依赖项,我正在尝试设置项目/目标以工作,但 运行 遇到了 Cocoapod 依赖项的问题我正在尝试加载 PusherSwift.swift
(import Alamofire
等)失败。
这是回购的 link:https://github.com/hamchapman/pusher-swift-test
谁能看出为什么没有加载 pod 框架以便它们可以在 PusherSwift.swift
文件中使用?
具体来说,我正在尝试 运行(默认)测试,但它一直失败说:
No such module Alamofire
注意,我使用的是:
- 可可pods 0.36.0 beta2 gem
- Xcode 6.3 测试版
好吧,我现在通过在 PusherSwift 项目中添加 Pods 项目使其工作。我不完全确定为什么它会起作用,但它基本上似乎只是使框架可用于 PusherSwift 目标。
默认情况下,Cocoapods 仅 link 指向项目中的第一个目标。第二个目标,通常是您的单元测试,未被 linked。
http://guides.cocoapods.org/syntax/podfile.html#link_with
使用 Podfile 中的 link_with
配置明确 link pods 到您的单元测试目标。例如
link_with 'MyApp', 'MyAppTests'
这是一个愚蠢的答案,但它有效。
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
target 'Echo' do
pod 'Alamofire'
pod 'AFNetworking'
pod 'Google/Analytics'
pod 'Google/AppInvite'
pod 'Appirater'
pod 'FDTake'
pod 'MBProgressHUD'
pod 'TDBadgedCell'
pod 'FDWaveformView'
pod 'SwiftyJSON'
end
target 'EchoTests' do
pod 'Alamofire'
pod 'AFNetworking'
pod 'Google/Analytics'
pod 'Google/AppInvite'
pod 'Appirater'
pod 'FDTake'
pod 'MBProgressHUD'
pod 'TDBadgedCell'
pod 'FDWaveformView'
pod 'SwiftyJSON'
end
我确定有更好的方法,但我找不到!
做这样的事情:
target 'Echo' do
pod 'Alamofire'
pod 'AFNetworking'
pod 'Google/Analytics'
pod 'Google/AppInvite'
pod 'Appirater'
pod 'FDTake'
pod 'MBProgressHUD'
pod 'TDBadgedCell'
pod 'FDWaveformView'
pod 'SwiftyJSON'
target 'EchoTests' do
inherit! :search_paths
end
end
这使得测试目标具有主要目标所具有的所有 pods,但您仍然可以定义一些测试依赖项,例如模拟或存根 pods
我会先说这个解决方案可能非常简单,但我已经尝试了几个小时来解决这个问题,我觉得它很接近,但仍然有问题。
我正在创建一个 Cocoapod,它有一些其他 pods 作为依赖项,我正在尝试设置项目/目标以工作,但 运行 遇到了 Cocoapod 依赖项的问题我正在尝试加载 PusherSwift.swift
(import Alamofire
等)失败。
这是回购的 link:https://github.com/hamchapman/pusher-swift-test
谁能看出为什么没有加载 pod 框架以便它们可以在 PusherSwift.swift
文件中使用?
具体来说,我正在尝试 运行(默认)测试,但它一直失败说:
No such module Alamofire
注意,我使用的是:
- 可可pods 0.36.0 beta2 gem
- Xcode 6.3 测试版
好吧,我现在通过在 PusherSwift 项目中添加 Pods 项目使其工作。我不完全确定为什么它会起作用,但它基本上似乎只是使框架可用于 PusherSwift 目标。
默认情况下,Cocoapods 仅 link 指向项目中的第一个目标。第二个目标,通常是您的单元测试,未被 linked。 http://guides.cocoapods.org/syntax/podfile.html#link_with
使用 Podfile 中的 link_with
配置明确 link pods 到您的单元测试目标。例如
link_with 'MyApp', 'MyAppTests'
这是一个愚蠢的答案,但它有效。
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
target 'Echo' do
pod 'Alamofire'
pod 'AFNetworking'
pod 'Google/Analytics'
pod 'Google/AppInvite'
pod 'Appirater'
pod 'FDTake'
pod 'MBProgressHUD'
pod 'TDBadgedCell'
pod 'FDWaveformView'
pod 'SwiftyJSON'
end
target 'EchoTests' do
pod 'Alamofire'
pod 'AFNetworking'
pod 'Google/Analytics'
pod 'Google/AppInvite'
pod 'Appirater'
pod 'FDTake'
pod 'MBProgressHUD'
pod 'TDBadgedCell'
pod 'FDWaveformView'
pod 'SwiftyJSON'
end
我确定有更好的方法,但我找不到!
做这样的事情:
target 'Echo' do
pod 'Alamofire'
pod 'AFNetworking'
pod 'Google/Analytics'
pod 'Google/AppInvite'
pod 'Appirater'
pod 'FDTake'
pod 'MBProgressHUD'
pod 'TDBadgedCell'
pod 'FDWaveformView'
pod 'SwiftyJSON'
target 'EchoTests' do
inherit! :search_paths
end
end
这使得测试目标具有主要目标所具有的所有 pods,但您仍然可以定义一些测试依赖项,例如模拟或存根 pods