如何从 UI 测试访问 App Delegate?

How to access the App Delegate from a UI Test?

我想在 UI 测试期间从已启动应用程序的 App Delegate 访问特定的 属性 router,但我不知道这是否可行或不是。我试过:

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let router = appDelegate.router

但这会导致失败,甚至无法构建。我在我的项目模块上使用 @testable。有什么想法吗?

Xcode UI 测试的设计使得测试代码只能看到用户可以看到的内容,因此不能在测试代码中使用或检查被测应用程序中的任何对象。这也是屏幕上的视图被表示为 XCUIElement 对象而不是 UIView 后代的原因。

UI 测试 运行 在独立于被测应用程序的可执行文件中。从应用程序向 UI 测试传达附加信息的唯一方法是构建一个包含信息的字符串并将其用作元素的可访问性标识符。

如果您想测试需要从应用程序代码访问对象的内容,您很可能需要编写单元测试而不是 UI 测试。