在XCUITest中读取本地JSON文件

时间:2017-02-17 23:56:49

标签: ios json swift3 xctest xcode8.2

我正在为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

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:4)

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

let t = type(of: self)
let bundle = Bundle(for: t.self)
let path = bundle.path(forResource: "myurl", ofType: "json")

答案 1 :(得分:0)

这不是您在Bundle中从iOS读取本地json文件的方式。它以下列方式完成:

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

if let pathStr: String = Bundle.main.path(forResource: "myurl", ofType: ".json") {
    print("json path: \(pathStr)")
}

答案 2 :(得分:0)

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