发布于 : Oct 27, 2021
不在本期内容中
这一条目不在当前版本的技术雷达中。如果它出现在最近几期中,那么它很有可能仍然具有相关参考价值。如果这一条目出现在更早的雷达中,那么它很有可能已经不再具有相关性,我们的评估将不再适用于当下。很遗憾我们没有足够的带宽来持续评估以往的雷达内容。
了解更多
Oct 2021
试验
当我们使用 SwiftUI 创建界面时,其背后理念是创建一个可以轻松映射到界面元素的视图模型。在这种场景下,大多数测试都可以在模型上完成,而我们只需使用标准的单元测试框架就能编写直观、高效的测试。为了测试模型和视图之间的数据绑定,开发者会使用 XCUITest,这个自动化框架会启动完整的应用并远程控制界面,它能达到目的,测试效果也还算稳定,但是耗时很长。
想要更快地给 SwiftUI 编写单元测试,您可以试试 ViewInspector 开源库,它利用 Swift 开放的反射API 访问 SwiftUI 创建的底层视图。因此,基于 ViewInspector 的测试只需要实例化一个 SwiftUI 视图,定位到需要测试的界面元素,就可以对元素进行断言测试,而像点击这种基本的交互也可以被测试到。如同许多别的 UI 测试框架,ViewInspector 提供了定位界面元素的 API,您可以指定路径,通过视图层级结构找到元素,也可以使用一系列查找方法定位元素。基于 ViewInspector 的测试往往比用 XCUITest 的测试更简单,运行起来也要快得多。不过,需要注意的是,尽管用 ViewInspector 写测试很简单,您也可能因此过度测试——测试简单的一对一映射逻辑就像在复印代码,没有太大意义。此外,即便 ViewInspector 降低了测试 SwiftUI 代码的难度,也请记住要把大部分逻辑放在模型中实现。