【发布时间】:2019-08-26 17:51:03
【问题描述】:
我通常会在集成测试中看到RunLoop.current.run(until: Date()) 被调用。
例如在this article 和这个open source project 中。
文章中给出的解释是
RunLoop.current.run(until: Date()) 语句确保与当前线程关联的运行循环有足够的时间让绘图操作完成
如果这是真的,为什么我们不给它更多时间,我们怎么知道Date() 就足够了?
我读了几篇关于运行循环的文章,在我看来,添加这行代码的原因是为了启动应用程序。看起来 appDelegate 通常会自动触发或启动运行循环,但由于我们正在测试,我们需要自己触发运行循环。
我可能缺少对线程或运行循环的一些基本了解,但我希望有人能提供一些见解。
【问题讨论】:
-
我认为这会导致运行循环运行一次。在它完成一个循环后,会经过一些非零的时间,并且当前时间将大于
Date(),从而导致runloop不再重复。
标签: ios swift integration-testing runloop