在测试Xcode项目时无法访问AppDelegate

Moh*_*med 5 xcode unit-testing ios swift

func testExample() {
    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    // some code ...
}
Run Code Online (Sandbox Code Playgroud)

上面的函数总是崩溃并给出这个错误:

无法将"MyAppName.AppDelegate"类型的值(0x10dc09e80)转换为"MyAppNameTests.AppDelegate"(0x11cc190c0).

Ger*_*tan 3

您可能正在将 AppDelegate 编译到您的测试目标中。不要这样做。

相反,仅编译到普通应用程序目标 MyAppName 中。在你的测试类中用 XCode 7 编写

@testable import MyAppName
Run Code Online (Sandbox Code Playgroud)

在 XCode 7 之前

import MyAppName
Run Code Online (Sandbox Code Playgroud)