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()函数怎么使用?
iOS 报错信息: dyld: Library not loaded: @rpath/XCTest.framework/XCTest Referenced from