Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何在xtest'中报告错误;什么是设置功能?_Swift_Xctest_Xcode Ui Testing - Fatal编程技术网

Swift 如何在xtest'中报告错误;什么是设置功能?

Swift 如何在xtest'中报告错误;什么是设置功能?,swift,xctest,xcode-ui-testing,Swift,Xctest,Xcode Ui Testing,在UI测试中,我希望在运行UI测试之前调用远程端点重置db状态。这非常有效,但我想确保在请求失败时捕获到任何错误。我想做的是: 停止后续测试的运行(将其标记为失败) 提供所发生事情的一些日志 下面是一些示例代码,说明了我的观点: override func setUp() { super.setUp() var finished = false dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND,

在UI测试中,我希望在运行UI测试之前调用远程端点重置db状态。这非常有效,但我想确保在请求失败时捕获到任何错误。我想做的是:

  • 停止后续测试的运行(将其标记为失败)
  • 提供所发生事情的一些日志
  • 下面是一些示例代码,说明了我的观点:

    override func setUp() {
        super.setUp()
    
        var finished = false
    
        dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)) {
            let request = Alamofire.request(.GET, "http://xxx.xxx.xxx.xxx/resetdb")
            request.response() {
                request, response, data, error in
                if let _ = error {
                    let message = "Could not call remote helper -- \(response?.statusCode)"
                    XCTFail(message)  // doesn't work
                    debugPrint(message) // can't see this anywhere
                }
                finished = true
            }
        }
    
        while !finished {
            NSRunLoop.currentRunLoop().runMode(NSDefaultRunLoopMode, beforeDate: NSDate.distantFuture())
        }
        app = XCUIApplication()
        app.launch()
    }
    

    设置
    是测试运行的一部分,就像
    拆卸
    一样。在其中任何一个中使用常规的XCTest断言。

    如果在
    设置
    正文中调用
    XCTFail()
    ,而不是在传递给
    dispatch\u async
    的块中调用,会发生什么情况?搜索stackoverflow上的XCTest期望以找到答案。有趣的是,对我来说,在
    重写类func setUp()
    (即@BeforeClass类型方法)中失败
    xctasert
    ,会导致XCTest中出现内部故障,因为“test”变量尚未定义,因此它会跳过所有测试,并且Xcode表示它们已通过。显然,断言并不总是可信的。是的,我指的是实例级
    setUp
    。感谢您澄清,对于类级别的
    设置
    ,情况并非如此。在设置方法中使用XCTest断言的问题在于,失败的断言不会停止测试的运行。失败的断言将测试标记为失败,但测试将继续运行。这是真的,与常规的失败断言(失败后继续运行)没有区别。您需要在实例
    设置
    方法中将
    self.continueAfterFailure
    设置为
    false