1

我正在为 iOS 应用程序编写 UI 测试。我想从本地 json 文件中读取数据。

我正在使用以下代码来获取我的 json 文件的路径:

func testExample() {

    readJSON()
}

func readJSON(){
    let bundle = Bundle(for:myTestClass.self)
    if let path = bundle.url(forResource: "myurl", withExtension: "json"){
        print("Got the path")
        print(path)
    }
    else{
        print("Invalid filename/path")
    }

我尝试使用以下 stackoverflow 问题的解决方案: Reading in a JSON File Using Swift。没用!

另外,我查看了以下 Apple 文档: https ://developer.apple.com/swift/blog/?id=37

任何帮助将不胜感激!

4

3 回答 3

8

首先,您需要检查.json文件是否与测试文件在同一目标中。如果文件在主目标中,则必须使用Bundle.main. 但是,如果它与您的测试在同一目标中,请使用以下代码。

let t = type(of: self)
let bundle = Bundle(for: t.self)
let path = bundle.path(forResource: "myurl", ofType: "json")
于 2018-01-31T18:20:45.727 回答
0

这不是您从Bundlein读取本地 json 文件的方式iOS。它通过以下方式完成:

// "myUrl" is assumed to be your json file name 

if let pathStr: String = Bundle.main.path(forResource: "myurl", ofType: ".json") {
    print("json path: \(pathStr)")
}
于 2017-02-18T05:46:32.730 回答
0

我刚刚发现添加到 XCUITest 目标的资源将放在Bundle.main.resourcePath + "/PlugIns/<TARGET_NAME>.xctest/". 但是,我不确定是否有更好的方法来访问它们,而不是对子目录路径进行硬编码。

于 2018-07-17T06:31:40.823 回答