【发布时间】:2016-04-18 12:23:47
【问题描述】:
let expecation = expectationWithDescription("do tasks")
for i in 0...40 {
let afterTiming = 0.3 * Double(i)
let startTime = CFAbsoluteTimeGetCurrent()
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(afterTiming * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime
print("\(afterTiming) - \(timeElapsed) : \(i)")
}
}
waitForExpectationWithTimeout(14)
在 30 执行几乎一秒钟后,控制台开始表现怪异,同时显示两条和两条打印行
9.0 - 9.88806998729706 : 30
9.3 - 9.88832598924637 : 31
有没有办法让XCTest 更接近“在正确的时间”实际执行请求?就像得到应该在 9 秒后完成的请求在 9.88 秒后没有完成..
【问题讨论】:
-
我删除了
XCTest标签,因为它与 XCTests 没有任何特定关系。您需要这个来进行测试只是巧合。虽然......我很想看看你实际上想像这样测试什么(然后添加标签)。 -
@nhgrif 提到 XCTest 很重要,因为它实际上调用了 waitForExpectationsWithTimeout() - 我不确定这是否适用于例如阻塞测试中的主线程
-
如果您觉得提及
XCTest很重要,那么您确实需要提供您尝试运行的测试以获取上下文。就目前而言,这有点像XY Problem。 -
@nhgrif 是的,可能真的没什么大不了的。
-
好像等了10秒,但至少要等12秒。
标签: swift grand-central-dispatch core-foundation