【发布时间】:2016-11-14 10:08:52
【问题描述】:
我的 iOS 应用有多个扩展:
今日延期
siri 扩展
信息扩展
我还创建了框架来共享通用代码。我的问题是我想要一个单元测试目标来测试所有扩展。我的 Podfile 看起来像这样:
target 'MyApp' do
pod 'MyFramework', :path => './MyFramework'
target 'MyAppTests' do
inherit! :search_paths
end
end
abstract_target 'Extensions' do
pod 'MyFramework', :path => './MyFramework'
target 'TodayExtension'
target 'SiriExtension'
target 'iMessageExtension'
target 'ExtensionsTests'
end
如您所见,我创建了ExtensionsTests 目标,但我不知道如何继承所有扩展的搜索路径。我也尝试使用
@testable import TodayExtension 但我收到未定义符号的链接错误,用于架构 x86_64。
有什么办法可以解决这个问题吗?
完整的错误代码:
Undefined symbols for architecture x86_64:
"type metadata accessor for TodayExtension.LoadingView", referenced from:
ExtensionTests.LoadingViewTests.setUp () -> () in LoadingViewTests.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
编辑:
我认为这个问题很普遍:如何测试任何扩展代码?我创建了单视图项目,添加了今天的扩展,但我无法扩展代码。
在苹果文档中只有以下信息:
使用 Xcode 测试框架(即, XCTest APIs),编写测试来使用扩展代码 您的包含应用程序作为主机环境。了解更多关于 测试,请参阅使用 Xcode 进行测试。
这不是很有帮助
【问题讨论】:
-
在 TodayExtensions 构建设置中,将
Build Active Architecture Only设置为NO。 -
@shallowThought 与此设置相同的错误
-
设置了 Build Active Architecture Only 后能否成功构建 TodayExtension?
-
抱歉@shallowThought 我再次检查了,在将 Build Active Architecture 设置为 NO 后我无法构建此目标。任何想法为什么?
-
添加了更多信息的答案。
标签: ios swift xcode unit-testing cocoapods