【发布时间】:2016-12-31 01:21:24
【问题描述】:
TLDR:在没有宿主应用程序的情况下运行 iOS 单元测试有哪些限制?
互联网上似乎很多关于 iOS 无主机测试(逻辑与应用程序测试)的帖子可能已经过时了。例如,根据this 和this Stack Overflow post,您不能在逻辑测试中实例化UIFont。我只是尝试使用运行 iOS 10.2 的 Xcode 8.2.1 和 iPhone 7 模拟器来执行此操作,它似乎工作正常。
这是一个包含此类测试的示例项目: https://github.com/lyahdav/SnapshotLogicTest
这实际上是 Xcode 逻辑测试的一个限制——它们不会启动 一个 UIApplication 实例,不能很好地与 UIKit 配合使用
但是,如果您查看我上面的示例项目,它正在创建一个 UIView 并使用 FBSnapshotTestCase 断言视图在逻辑测试中呈现相同并且一切似乎都工作正常。
此外,我再也找不到 Apple 的 Logic vs Application 测试文档了。例如,this post 和 this post 链接到 Apple 网页,这些网页现在似乎已失效,我找不到更新的网页来替代它。
我想知道 Apple 是否已将区别最小化,因为区别只是在您的测试目标上设置了主机应用程序。但我不清楚逻辑测试是否有任何限制。我真的很喜欢它们,因为它允许我为我的应用程序的某些部分创建更小、更独立的测试目标,这些目标可以比应用程序测试套件运行得更快。
更新:我想我会添加一个关于UI Testing 的注释。根据 Apple 文档,从 Xcode 7 开始,他们将 UI 测试添加为 XCTest 的一部分。这似乎与关于主机与无主机单元测试目标的点正交。
【问题讨论】:
标签: ios xcode unit-testing