我在应用程序中的一个方法中从测试用例访问app delegate时得到了swift_dynamiccast无条件异常。
应用程序中的功能如下:
func sampleMethod()
{
var appdelegate:AppDelegate = UIApplication.sharedApplication().delegate! as AppDelegate
}
测试用例正在访问此方法:
func testStart()
{
var sample:MyClass = MyClass()
sample.sampleMethod()
}
它在方法sampleMethod()中引发异常,然后继续。我添加了MyClass& AppDelegate在构建阶段的测试用例项目中的文件。
这里有什么建议吗?一个类似的未回答的问题here.
答案 0 :(得分:2)
您是否已将AppDelegate.swift添加到测试的目标成员?
相反,请尝试从应用程序模块中导入它。
Rick是对的。我遇到了类似的问题,经过
解决了答案 1 :(得分:2)
这是因为在测试的情况下AppDelegate对象与主项目AppDelegate的类型不同。因此,您的应用程序崩溃了
class MyClass: NSObject {
func someMethod() {
var checkObject:AnyObject = UIApplication.sharedApplication().delegate!;
NSLog("%@", checkObject.description);
var appdelegate:AppDelegate = AppDelegate();
NSLog("%@", appdelegate);
}
}
您可以在控制台中看到此功能的结果:
2015-01-14 13:03:58.299 TestSwift[654:282510] <TestSwift.AppDelegate: 0x17007b940>
2015-01-14 13:04:01.085 TestSwift[654:282510] <TestSwiftTests.AppDelegate: 0x17467f740>
可能的解决方案:使用AnyObject变量而不是强制转换为AppDelegate