我正在尝试通过对当前屏幕元素(标签、图像、按钮)进行快照并将其可访问性信息保存到 json 文件来扩展 Xcode 7 中的新 UI 测试功能。
这个想法是,当稍后运行 UI 测试时,可以拍摄当前屏幕快照并与现有屏幕快照进行比较,如果发现额外或缺少的元素,测试将失败。
不幸的是,即使目标正确,在 UI 测试期间应用程序资源似乎也不可用,因此无法加载 json 文件进行比较。以下标准代码无法加载资源:
guard let resourcePath = NSBundle.mainBundle ().pathForResource ("StartScreenShapshot", ofType:"json") else {
XCTFail ("can't load resource StartScreenShapshot")
return
}
我可以理解为什么 Apple 采用了这种沙盒方法,因为 UI 测试应该基于屏幕上发生的事情,并且不应该需要访问应用程序的工作,但无法访问资源包是一件痛苦的事情。
那么,在 Xcode 7 UI 测试期间,有没有办法从应用程序加载本地资源,或者以其他方式在本地加载?
将文件保存在本地(自动)也将是一个巨大的优势,可以节省手动创建它们。