Answers:
在主要目标中,您需要将Enable Testability
构建选项设置为“是”。
根据下面@earnshavian的评论,应仅根据Apple发行说明在调试版本中使用此选项:“启用可测试性版本设置应仅在Debug配置中使用,因为它禁止不依赖于不从内部导出内部符号的优化应用或框架” https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
@testable
)但需要提交到App Store的版本)中应该如何工作?如果Enable Testability
仅用于调试版本,解决方法是什么?我是否必须提取测试代码才能发布?
就我而言,我使用了一个自定义的构建配置进行测试(称为Test
),还cocoapods
用作依赖项管理器
我必须在我的末尾添加以下几行Podfile
以启用可测试性
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if config.name == 'Test'
config.build_settings['ENABLE_TESTABILITY'] = 'YES'
end
end
end
end
默认情况下cocoapods
设置ENABLE_TESTABILITY
为YES
仅针对Debug
构建
这可能是因为您的主要目标Enable Testability
设置为NO
。您应该YES
在调试方案(用于运行测试)中将其设置为。
如果您使用Carthage,则可能是由于使用导入框架引起的@testable
,因为它们是使用发布方案构建的。
在大多数情况下,导入带有该前缀的框架是不明智的做法,因此您可以避免使用它。如果不能,则应Enable Testability
采用框架的发布方案。https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
如果您尝试测试框架:
转到测试目标->构建阶段->创建新的复制文件阶段->选择框架->添加所有递归使用的框架
如果有机会
install! 'cocoapods',
generate_multiple_pod_projects: true,
incremental_installation: true
然后,这就是这样做的方法。
# generated_projects only returns results if the we run "pod install --clean-install"
# or install a pod for the first time
installer.generated_projects.each do |project|
project.build_configurations.each do |configuration|
configuration.build_settings["ENABLE_TESTABILITY"] = "YES"
end
end