互联网上有很多关于iOS无主机测试(逻辑与应用测试)的帖子可能已经过时了.例如,根据this和this Stack Overflow post,您无法在逻辑测试中实例化UIFont.我只是尝试使用运行iOS 10.2的Xcode 8.2.1和iPhone 7模拟器,它似乎工作正常.
这是一个带有这样一个测试的示例项目:
@L_301_2@
This is actually a limitation of Xcode logic tests—they don’t fire up
a UIApplication instance and don’t play nicely with UIKit
但是如果你看看我上面的示例项目,它正在创建一个UIView并使用FBSnapshotTestCase断言视图在逻辑测试中呈现相同,一切似乎都正常.
另外,我找不到Apple的Logic vs Application测试文档了.例如,this post和this post链接到Apple网页,现在似乎已经死了,我找不到更换它的新页面.
我想知道Apple是否已经最小化了区别,因为差异只是在您的测试目标上设置主机应用程序.但是我不清楚逻辑测试是否有任何限制.我非常喜欢它们,因为它允许我为我的应用程序的部分创建更小,更孤立的测试目标,这些目标可以比Application Test套件快得多.
更新:我想我会添加一个关于UI Testing的注释.根据Apple文档,从Xcode 7开始,他们添加了UI测试作为XCTest的一部分.这似乎与关于主机与无主机单元测试目标的观点正交.
解决方法
I wonder if Apple has minimized the distinction since the difference is simply setting a host application on your test target or not.
现在有单元测试和UI测试.两者都涉及运行应用程序. Apple根本不再单独讨论逻辑测试.