hgw*_*tle 138 unit-testing ios swift swift2
我正在尝试使用Swift 2的新@testable声明来将我的类暴露给测试目标.但是我收到这个编译错误:

Intervals是包含我试图公开的类的模块.我该如何摆脱这个错误?
sga*_*gaw 221
在主目标中,您需要将Enable Testability构建选项设置为是.
根据下面的@earnshavian的评论,这应该只用于调试版本,根据苹果发行说明:"Enable Testability构建设置应仅在您的调试配置中使用,因为它禁止依赖于不从中导出内部符号的优化应用程序或框架" https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-SW326
Bar*_*zyk 13
解决方案很简单.确保在应用方案下正确设置了复选框.你应该取消选中你的测试目标存档生成.
rgk*_*shi 12
我在使用 Bitrise 运行测试时开始收到此错误。
与其他用户所说的不同,这不是按Target基础,或按Schema基础,而是按基础Configuration。选择Target->Build Settings选项卡 -> 查找testability-> 在您正在使用的配置上启用它。
请注意,Apple 建议在您用于调试(而非 AppStore)的配置上启用此功能。
Tim*_*Tim 11
在我的例子中,我使用自定义构建配置进行测试(被调用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
Run Code Online (Sandbox Code Playgroud)
默认情况下,仅cocoapods设置为构建ENABLE_TESTABILITYYESDebug
这可能是因为您的主要目标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
| 归档时间: |
|
| 查看次数: |
22822 次 |
| 最近记录: |