ios - 断言当前线程是主线程的单元测试 [iOS]

标签 ios swift multithreading unit-testing testing

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

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

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

更新:

服务内部有一个调用:

DispatchQueue.main.async {
    failure(error)
}

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

最佳答案

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

关于ios - 断言当前线程是主线程的单元测试 [iOS],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53774395/

相关文章:

iOS 11 - 当 DisplayMode.primaryHidden 更改为 .allVisible 时,SplitViewController 主导航 TableView 更改状态栏颜色

php - 服务器发送的事件 PHP 阻塞流

java - 创建一个线程来写入使用键盘输入的每个字符

ios - "Popover"用于用户输入

android - "ionic cordova prepare android"继续尝试安装 iOS 插件导致在 Ubuntu 16.04 上构建失败

ios - 拒绝许可后的 Facebook 登录

swift - 重叠访问 'urlComponents' ,但修改需要独占访问

php - 将数据传递给 PHP 的选项有哪些?

ios 表数据不显示

android - 如何在预定时间段更新 View