首页 > 解决方案 > 断言当前线程是主线程的单元测试 [iOS]

问题描述

问题是编写一个断言当前线程是主线程的单元测试是否有意义?优点缺点?

最近我看到了为服务回调断言当前线程的单元测试。我不确定,这是一个好主意,我相信它更像是一种集成测试。在我看来,单元测试应该孤立地断言方法,不应该知道服务消费者的性质。

在 iOS 中,此服务的使用者旨在成为一个 UI,默认情况下它具有在主线程上运行代码的约束。

更新:

服务内部有一个调用:

DispatchQueue.main.async {
    failure(error)
}

它在测试套件期间运行并且没有被模拟。因此,有一个延迟打破了单元测试必须快速并且单元测试应该与任何其他单元测试同时运行的规则。

标签: iosswiftmultithreadingunit-testingtesting

解决方案


UI 层的工作是确保它只在主线程上更新 UI。您希望将主线程上的工作限制在最低限度(基本上,只有 UI 工作)。您的回调很可能会进行许多其他处理。将所有这些都放在主线程上是不好的做法,只是因为这些任务中的一小部分(UI 更改)需要它。


推荐阅读