无法在测试中将 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在Clojure中将字符强制转换为int?

如何在 App Delegate 中将选项卡控制器设置为根控制器而不实例化(重新加载)它?

子类化的 UIView,当设置为 Storyboard 中的默认视图时,编译器无法识别而不进行强制转换

如何在 Swift 中将 NSDateComponents 转换为 DateComponents

未经检查的强制转换:尝试在同一方法中将 Int 或 String 强制转换为 T(泛型类型)

iOS单元测试如何阻止App Delegate做事