在 SwiftUI 单元测试中禁用模拟器

Posted

技术标签:

【中文标题】在 SwiftUI 单元测试中禁用模拟器【英文标题】:Disable simulator in SwiftUI unit test 【发布时间】:2021-11-21 13:46:50 【问题描述】:

我是 SwiftUI 和 XCode 的新手,并试图通过一本 TDD 书籍来学习它。到目前为止,所有测试都是非 UI 测试;它们只是逻辑单元测试。运行非 UI 单元测试时有什么方法可以禁用模拟器? 我猜如果没有模拟器,它会运行得稍微快一点,而且每次都弹出模拟器来运行单元测试有点烦人。 我试图编辑我的测试方案,它只包括单元测试而不是 UI 测试;仍然每次都会弹出模拟器。 我正在使用 XCode 12.5.1。

【问题讨论】:

【参考方案1】:

在运行非 UI 单元测试时有什么方法可以禁用模拟器?

我这样做的方法是将所有业务逻辑代码及其单元测试放入一个框架中。 Xcode 在不加载应用目标的情况下测试框架,因此不涉及模拟器。

【讨论】:

对于一个快速的初学者,请详细说明您所说的“框架”是什么意思? 嗯,很难说得更清楚。例如,请参阅developer.apple.com/library/archive/technotes/tn2435/…。如果这太麻烦了,或者它不能很好地与您的 SwiftUI 结构配合使用,请不要这样做(并且您只需要在运行测试时启动模拟器即可)。 哇,刚刚意识到你是 ios 社区中著名的 Matt! 抱歉又捡到这个了;我试图在我的工作区中创建一个框架项目;但是在运行框架代码测试时,它仍然会加载 UI。是不是因为我的工作区也有 UI 项目?

以上是关于在 SwiftUI 单元测试中禁用模拟器的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI Xcode项目新增单元测试(Unit Test)后预览(Preview)崩溃的解决

SwiftUI Xcode项目新增单元测试(Unit Test)后预览(Preview)崩溃的解决

笑话:在单元测试中禁用控制台的更好方法

如何在 Python Django 中运行单元测试时禁用日志记录?

如何调整我的视图模型以实现依赖注入 swiftui(用于以后的单元测试)

运行单元测试时禁用winston日志记录?