XCTest的setUp函数报错怎么办?

Posted

技术标签:

【中文标题】XCTest的setUp函数报错怎么办?【英文标题】:How do I report an error in XCTest's setUp function? 【发布时间】:2016-02-23 16:36:14 【问题描述】:

在我的 UI 测试中,我想在运行我的 UI 测试之前调用远程端点来重置数据库状态。这很好用,但我想确保如果请求失败,我会发现任何错误。我想做的是:

    停止运行后续测试(将其标记为失败) 提供一些发生的事情的日志。

这里有一些示例代码可以说明我的观点:

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()

【问题讨论】:

如果您在setUp 正文中而不是在传递给dispatch_async 的块中调用XCTFail() 会发生什么? 在***上搜索xctest期望找到答案。 【参考方案1】:

setUp 是测试运行的一部分,tearDown 也是如此。使用常规的 XCTest 断言。

【讨论】:

有趣的是,对我来说,在 override class func setUp()(即 @BeforeClass 类型方法)中失败的 XCTAssert 会导致 XCTest 内部失败,因为尚未定义“测试”变量,因此它会跳过所有测试并且 Xcode 说它们通过了。显然,这些断言并不总是值得信任的。 是的,我的意思是实例级setUp。感谢您澄清这不适用于类级别 setUp 在 setUp 方法中使用 XCTest 断言的问题在于,失败的断言不会停止测试的运行。失败的断言将测试标记为失败,但测试将继续运行。 这是真的,与常规的失败断言(失败时继续运行)没有什么不同。 您需要在实例setUp方法中将self.continueAfterFailure设置为false

以上是关于XCTest的setUp函数报错怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

python setup.py bdist_wheel 报错的处理办法

请问在Inno Setup打包中ActiveLanguage()函数怎么使用?

Inno Setup中怎么随语言定义桌面图标名?

Vue3的setup基础

iOS 报错信息: dyld: Library not loaded: @rpath/XCTest.framework/XCTest Referenced from

XCTest:有没有办法在 UI 测试中通过 ID 查找任何类型的视图?