Swift 如何在xtest'中报告错误;什么是设置功能?
在UI测试中,我希望在运行UI测试之前调用远程端点重置db状态。这非常有效,但我想确保在请求失败时捕获到任何错误。我想做的是: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,
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
。