通过Cocoapods包含Xcode 7 UI测试依赖项?

时间:2015-06-17 13:48:46

标签: ios swift cocoapods xcode7 xcode-ui-testing

我有一个现有的Objective-C项目,我希望添加一个新的Xcode 7 UI测试目标,并将OHHTTPStubs作为依赖项。

我在Xcode中添加了新的(Swift 2.0)UI测试目标,然后将其添加到我的Podfile

target 'FooUITests' do
    pod 'OHHTTPStubs', '4.0.1'
end

我跑pod update,清理并重建。但是当我在模板UI测试的顶部尝试import OHHTTPStubs。为我创建的.swift文件Xcode时,它会抱怨"没有这样的模块' OHHTTPStubs'"。

我正在使用Cocoapods版本0.37.2 - 将Objective-C依赖项导入到Swift(... UI测试)目标中,甚至可以工作吗?

更新如下面我的self-answer所述,将use_frameworks!添加到我的Pod文件中可以获得干净的编译 - 我可以在我的测试顶部import OHHTTPStubs文件,引用类和方法,代码完成工作 - 但是当我真正去运行测试时,我在Xcode控制台中得到以下输出:

2015-06-18 10:06:57.134 XCTRunner[51557:609693] The bundle “FooUITests” couldn’t be loaded because it is damaged or missing necessary resources. Try reinstalling the bundle.
2015-06-18 10:06:57.135 XCTRunner[51557:609693] (dlopen_preflight(/Users/foo/Library/Developer/CoreSimulator/Devices/38181A1B-67B1-4D7F-B434-85361533F985/data/Containers/Bundle/Application/83C68748-55A3-4A02-8862-C18ADEF895B5/FooUITests-Runner.app/PlugIns/FooUITests.xctest/FooUITests): Library not loaded: @rpath/OHHTTPStubs.framework/OHHTTPStubs
  Referenced from: /Users/foo/Library/Developer/CoreSimulator/Devices/38181A1B-67B1-4D7F-B434-85361533F985/data/Containers/Bundle/Application/83C68748-55A3-4A02-8862-C18ADEF895B5/FooUITests-Runner.app/PlugIns/FooUITests.xctest/FooUITests
  Reason: image not found)

我的Release-iphoneos目录下的Release-iphonesimulator似乎有OHHTTPStubs.framework~/Library/Developer/DerivedData版本。

有关正在发生的事情的任何提示?

3 个答案:

答案 0 :(得分:2)

原来我需要做的就是在use_frameworks!中告诉Cocoapods Podfile(仅适用于Swift目标):

target 'FooUITests' do
  use_frameworks!
  pod 'OHHTTPStubs', '4.0.1'
end

答案 1 :(得分:1)

[CP] Embed Pods Frameworks运行脚本构建阶段添加到我的测试目标,为我修复此问题,如in this CocoaPods GitHub issue所述。

请注意,在常规目标中,“构建阶段”部分包含[CP] Copy Pods Resources(运行"${SRCROOT}/../../Pods/Target Support Files/Pods-YOURTARGET/Pods-YOURTARGET-resources.sh")和[CP] Embed Pods Frameworks(运行"${SRCROOT}/../../Pods/Target Support Files/Pods-YOURTARGET/Pods-YOURTARGET-frameworks.sh")。但是,您的测试目标仅包含[CP] Copy Pods Resources

[CP] Embed Pods Frameworks运行脚本阶段手动添加到测试目标(运行"${SRCROOT}/../../Pods/Target Support Files/Pods-YOURTESTTARGET/Pods-YOURTESTTARGET-resources.sh")。

答案 2 :(得分:0)

似乎使用CocoaPods 0.38.0.beta.2工作,检查https://github.com/CocoaPods/CocoaPods/issues/3709