如何从 XCUITest 读取 Json 文件?
Posted
技术标签:
【中文标题】如何从 XCUITest 读取 Json 文件?【英文标题】:How to read Json file from XCUITest? 【发布时间】:2019-08-09 15:07:31 【问题描述】:我的 xcode 项目中有一个 json 文件,我正在尝试通过以下方式读取该文件:
let fileUrl = Bundle.main.url(forResource: "myfile", withExtension: "json")
等等。
当我从项目目标成员资格中的文件(如视图控制器文件)运行此代码时,代码运行并且我能够读取 json。但是,当在我的 XCUITestCase 文件中运行它时,它失败了,无法找到 url。
如何从 XCUItest 中读取 json 文件?
我看过这篇没有帮助的帖子 Read local JSON file in XCUITest
【问题讨论】:
【参考方案1】:对您的代码稍作修改,这对我有用
if let file = Bundle(for: type(of: self)).url(forResource: "YOUR_FILE", withExtension: "json")
let data = try! Data(contentsOf: file)
let dataJson = try! JSON(data: data)
// TODO Your handle here
else
XCTFail("Cannot read json file")
【讨论】:
谢谢你。你知道为什么 Bundle(for: type(of: self)) 允许正确的 url 吗?我读到如果文件在主目标中,那么应该使用 Bundle.main。 那是因为单元测试不是一个独立的应用程序。使用 mainBundle 你会得到类似 /Applications/Xcode.app/Contents/Developer/Tools 的东西,但是使用 bundleForClass 会得到你的单元测试类所在的包。 嗯,有道理。谢谢你。感谢您抽出宝贵时间帮助我学习并变得更好。【参考方案2】:您是否将此myfile.json
添加到 UITest 目标?这是最常见的问题
【讨论】:
是的,我做到了。在纸张图标下的右侧面板中,我选择了目标成员身份为项目和 UITest。以上是关于如何从 XCUITest 读取 Json 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 XCUITest(来自 Xcode 11)中的 xcresult 文件中提取详细信息?