Swift 从XCUITest中的URLSession获取输出

Swift 从XCUITest中的URLSession获取输出,swift,xcode,urlsession,xcuitest,Swift,Xcode,Urlsession,Xcuitest,我试图从XCUI测试中的URL中获取一个值。但是,它没有输出,所以我不确定除了我已经在下面的代码中尝试之外,我是否还有什么应该做的事情: import XCTest class ExampleUITests: XCTestCase { func testExample() { print("We are in XCUITest textExample right now") let urlString = "https://api.ipify.org/" guar

我试图从XCUI测试中的URL中获取一个值。但是,它没有输出,所以我不确定除了我已经在下面的代码中尝试之外,我是否还有什么应该做的事情:

import XCTest

class ExampleUITests: XCTestCase {


func testExample() {
    print("We are in XCUITest textExample right now")

    let urlString = "https://api.ipify.org/"
    guard let url = URL(string: urlString) else { return }

    URLSession.shared.dataTask(with: url) { (data, response, error) in
        if error != nil {
            print(error!.localizedDescription)
        }

        guard let data = data
            else {
                print("error found in data")
                return
        }

        print("*******")
        let outputStr  = String(data: data, encoding: String.Encoding.utf8) as String!
        print (outputStr)

        }.resume()

}

}

问题是,测试完成后会返回来自服务器的响应。您应该在测试中添加等待网络响应

在测试开始时,添加:

waitForExpectationsWithTimeout(5.0) { (error) in
    if error != nil {
        XCTFail(error.localizedDescription)
    }
}
let expectation=expectationWithDescription(“”)

在测试结束时,添加:

waitForExpectationsWithTimeout(5.0) { (error) in
    if error != nil {
        XCTFail(error.localizedDescription)
    }
}
并在网络完成块中添加:

expection.fulfill()


例如,在这里的测试中,您可以获得有关异步任务waining的更多信息。

我尝试添加一个完成块,如本问题所述,但它仍然没有给我任何输出