使用@testable时,'模块未被编译进行testing'
我试图使用Swift 2的新的@testable
声明来暴露我的类到testing目标。 不过,我得到这个编译器错误:
Intervals
是包含我试图公开的类的模块。 我如何摆脱这个错误?
在您的主要目标中,您需要将“ Enable Testability
构build选项设置为“是”。
根据下面的@earnshavian的评论,这应该只用于每个苹果发行说明的debugging版本:“启用可testing性构build设置应该只用于您的debuggingconfiguration,因为它禁止优化,取决于不导出内部符号应用程序或框架“ https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
解决scheme是相当简单的人。 确保您在您的应用scheme下正确设置您的checkbox。 您应该检查存档生成的testing目标。
在我的情况下,我使用自定义生成configuration进行testing(称为Test
),也用cocoapods
作为依赖pipe理器
我不得不添加以下几行到我的Podilfe
来启用可testing性
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
。 您应该在debuggingscheme中将其设置为YES
(用于运行testing)。
如果你使用迦太基,这个问题可能是由@testable
导入框架造成的,因为它们是用一个发布scheme构build的。
大多数情况下,导入带有该前缀的框架是不好的做法,所以你可以避免它。 如果你不能,你应该在框架的发布scheme中Enable Testability
。 https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
对于那些只有在运行Xcode Profiler的情况下遇到这种情况的人:在您的schemepipe理中将configuration文件构buildconfiguration切换到启用可testing性的configuration – 而在大多数情况下这将是debugging:
如果你使用豆荚/迦太基,以上的解决scheme是好的。 但是如果你使用的是iOS本身的框架(如Contacts),则需要在主项目目标的“库searchpath”中为这些框架添加path。
这在Xcode 8之前的项目中并没有发生,但是在升级到Xcode 8之后,这让我感到困惑。
在这里发布的答案没有得到解决我的问题。 对我来说,我只是放弃了这些testing,因为这是不需要的。 所以取消选中testingbutton:
而现在错误已经消失了。