无法在测试中将 App Delegate 强制转换为 App Delegate
Posted
技术标签:
【中文标题】无法在测试中将 App Delegate 强制转换为 App Delegate【英文标题】:Cannot cast App Delegate to App Delegate in Tests 【发布时间】:2015-08-11 21:34:58 【问题描述】:我正在使用 Swift 进行单元测试,但遇到了问题。每次运行测试时,我都会收到错误消息:
Could not cast value of type 'app.AppDelegate' to 'app_Tests.AppDelegate'
我确保未从测试包中选中 AppDelegate,并且视图控制器无法再访问应用程序委托。有没有人有这个问题的解决方案。提前致谢!
【问题讨论】:
嗨,这是你所期望的吗,***.com/questions/31990724/… 随时通知我 我想你会看到类似于下面的答案***.com/a/32161983/2010154 【参考方案1】:我认为您的 view controllers
已在您的测试包中检查了 target membership
。在这种情况下,您 view controllers
使用您的测试模块和应用程序委托您的真实模块。
如果您在测试文件的顶部有@testable import <module name>
,您的应用名称在哪里,例如app
。那么你应该可以在没有检查target membership
的情况下使用你的view controllers
进行测试。
这个东西是 2015 年 9 月发布的 Swift 2.0 附带的。
【讨论】:
我已经尝试过您的解决方案。但是如果我在视图控制器中编写了方法(例如:func getEmail()),则意味着我无法在测试中调用该方法。如何在测试目标中调用这些方法. 该方法应该是公共方法吗? @Madhumitha nope,@testable import
表示您也可以使用内部方法。但不是私人的。以上是关于无法在测试中将 App Delegate 强制转换为 App Delegate的主要内容,如果未能解决你的问题,请参考以下文章
如何在 App Delegate 中将选项卡控制器设置为根控制器而不实例化(重新加载)它?
子类化的 UIView,当设置为 Storyboard 中的默认视图时,编译器无法识别而不进行强制转换
如何在 Swift 中将 NSDateComponents 转换为 DateComponents