我想在UI测试期间从已启动应用的App Delegate访问特定属性router
,但我无法确定这是否可行。我试过了:
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let router = appDelegate.router
但这会导致失败,甚至无法建立。我在我的项目模块上使用@testable
。有什么想法吗?
答案 0 :(得分:7)
Xcode UI测试的设计使得测试代码只能看到用户可以看到的内容,因此测试代码中不能使用或检查被测应用程序中的任何对象。这也是为什么屏幕上的视图表示为XCUIElement对象而不是UIView后代的原因。
UI测试在与测试中的应用程序不同的可执行文件中运行。将应用程序中的其他信息传递给UI测试的唯一方法是构造一个包含该信息的字符串,并将其用作元素的可访问性标识符。
如果您想测试需要从应用程序代码访问对象的内容,则很可能需要编写单元测试而不是UI测试。