XCTestExpectation 不会等待给定的时间
Posted
技术标签:
【中文标题】XCTestExpectation 不会等待给定的时间【英文标题】:XCTestExpectation doesn't wait for given amount of time 【发布时间】:2014-10-15 16:08:53 【问题描述】:我编写了一个测试来检查某个值是否会在 5 秒内下降到零。 NSTimer 每隔一秒就会触发一个将该值减一的方法。
看起来像这样:
let foo = SomeObject(initWithTime: 5)
let expectation = expectationWithDescription("Ohai")
timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: foo, selector: Selector("decrement"), userInfo: nil, repeats: true)
XCTAssertTrue(foo.isFinished, "Foo is finished, so it should be true")
expectation.fulfill()
waitForExpectationsWithTimeout(5.0, handler: nil)
当 foo 达到零时,isFinished 设置为 true。计时器工作正常,但期望不等待 5 秒,只是立即崩溃。发生了什么事?
【问题讨论】:
【参考方案1】:您的 XCTAssertTrue 似乎立即失败,因为 foo 在立即调用时可能尚未完成。
【讨论】:
以上是关于XCTestExpectation 不会等待给定的时间的主要内容,如果未能解决你的问题,请参考以下文章
等待带有完成处理程序的*特定*(单个)XCTestExpectation?
xcodebuild 无法使用 XCTestExpectation 运行异步测试?