构建失败:没有这样的模块' KIF'

时间:2015-01-30 01:23:06

标签: ios cocoapods kif

在尝试在我的Swift项目中引用KIF时,我一直有一个零星的问题。

我的项目在“干净”后停止编译,并且一直给我错误:No such module 'KIF'

以下是KIF的cocoapods文件条目:

target 'MyProjectTests', :exclusive => true do
    pod 'KIF', '~> 3.0', :configurations => ['Debug','QA']
end

(这是KIF's readme推荐的cocoapods配置。)

我可以通过将上面的cocoapods条目更改为:

来再次编译
pod 'KIF', '~> 3.0'

但是在尝试运行时项目崩溃了:

dyld: Library not loaded: @rpath/XCTest.framework/XCTest
  Referenced from: /Users/albertbori/Library/Developer/CoreSimulator/Devices/29008343-5A97-47FB-B0E6-66D18A331BDA/data/Containers/Bundle/Application/C0E16F80-9A08-4228-96F7-8A24F08AB066/MyProject.app/Frameworks/KIF.framework/KIF
  Reason: image not found

然后,如果我将其切换回原始配置并执行pod install,则使用KIF进行测试会再次起作用...

如何正确引用KIF以确保使用该框架进行稳定的构建和开发?

1 个答案:

答案 0 :(得分:0)

在CocoaPods问题跟踪器上发布this issue后,kylef帮助我意识到我无意中将这些广告连接起来了。

以下his pull request解决了我所做的示例项目的问题。

总之,如果要链接根项目和测试项目,Podfile应该看起来像这样,但是有条件地向测试目标添加一个额外的pod:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'

use_frameworks!

pod 'MBProgressHUD', '~> 0.8'
pod 'Locksmith'

target 'catch22Tests' do
  pod 'KIF', '~> 3.0'
end

在这种情况下,您不要想要使用:link_with 'catch22', 'catch22Tests'或者它会将catch22Tests链接两次。