12

我有一个现有的 Objective-C 项目,我想添加一个新的 Xcode 7 UI 测试目标,其中OHHTTPStubs作为依赖项。

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

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

我跑pod update、打扫和重建。但是当我尝试import OHHTTPStubs在为我创建的模板 UI 测试 .swift 文件的顶部时,它会抱怨“没有这样的模块 'OHHTTPStubs'”。

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

更新:正如我在下面的自我回答中所指出的,添加use_frameworks!到我的 Podfile 可以让我进行干净的编译——我可以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-iphoneosRelease-iphonesimulator构建。OHHTTPStubs.framework~/Library/Developer/DerivedData

关于发生了什么的任何提示?

4

3 回答 3

2

原来我需要做的就是告诉 Cocoapods use_frameworks!(仅针对 Swift 目标)在Podfile

target 'FooUITests' do
  use_frameworks!
  pod 'OHHTTPStubs', '4.0.1'
end
于 2015-06-17T13:57:34.300 回答
1

向我的测试目标添加[CP] Embed Pods Frameworks运行脚本构建阶段为我解决了这个问题,如 CocoaPods GitHub 问题中所述。

请注意,在您的常规目标中,您的 Build Phases 部分包含[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 FrameworksRun Script 阶段添加到您的测试目标(运行"${SRCROOT}/../../Pods/Target Support Files/Pods-YOURTESTTARGET/Pods-YOURTESTTARGET-resources.sh")。

于 2016-09-01T16:38:53.917 回答
0

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

于 2015-07-08T00:44:50.613 回答