ios - 断言当前线程是主线程的单元测试 [iOS]
问题描述
问题是编写一个断言当前线程是主线程的单元测试是否有意义?优点缺点?
最近我看到了为服务回调断言当前线程的单元测试。我不确定,这是一个好主意,我相信它更像是一种集成测试。在我看来,单元测试应该孤立地断言方法,不应该知道服务消费者的性质。
在 iOS 中,此服务的使用者旨在成为一个 UI,默认情况下它具有在主线程上运行代码的约束。
更新:
服务内部有一个调用:
DispatchQueue.main.async {
failure(error)
}
它在测试套件期间运行并且没有被模拟。因此,有一个延迟打破了单元测试必须快速并且单元测试应该与任何其他单元测试同时运行的规则。
解决方案
UI 层的工作是确保它只在主线程上更新 UI。您希望将主线程上的工作限制在最低限度(基本上,只有 UI 工作)。您的回调很可能会进行许多其他处理。将所有这些都放在主线程上是不好的做法,只是因为这些任务中的一小部分(UI 更改)需要它。
推荐阅读
- css - 为什么 BODY 上的背景颜色会“冒泡”到 HTML
- raster - 在 R 中读取 .nc 文件
- java - 使用 Java 注解注入变量
- java - 为在 2D 中表示 1D 网格的游戏创建 toString 方法
- arrays - 这里的“2d_array”是指向另一个具有“width”元素数量的整数数组的指针吗?
- python - 如何在python中将数据附加到h5文件?
- java - 无法初始化类 util.HibernateUtil
- java - 多线程快速 BufferedReader Java
- postgresql - 带有 Postmodern 包的 Common Lisp 中表更改的客户端通知
- python - 如何使用 Python 不断地将鼠标位置移到 Tkinter 窗口之外?