如何从UI测试访问App Delegate?

时间:2016-06-28 19:13:26

标签: ios xcode-ui-testing

我想在UI测试期间从已启动应用的App Delegate访问特定属性router,但我无法确定这是否可行。我试过了:

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

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

1 个答案:

答案 0 :(得分:7)

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

UI测试在与测试中的应用程序不同的可执行文件中运行。将应用程序中的其他信息传递给UI测试的唯一方法是构造一个包含该信息的字符串,并将其用作元素的可访问性标识符。

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