Technology Radar
Published : Oct 27, 2021
NOT ON THE CURRENT EDITION
This blip is not on the current edition of the Radar. If it was on one of the last few editions, it is likely that it is still relevant. If the blip is older, it might no longer be relevant and our assessment might be different today. Unfortunately, we simply don't have the bandwidth to continuously review blips from previous editions of the Radar.
Understand more
Oct 2021
Trial
当我们使用 SwiftUI 创建界面时,其背后理念是创建一个可以轻松映射到界面元素的视图模型。在这种场景下,大多数测试都可以在模型上完成,而我们只需使用标准的单元测试框架就能编写直观、高效的测试。为了测试模型和视图之间的数据绑定,开发者会使用 XCUITest,这个自动化框架会启动完整的应用并远程控制界面,它能达到目的,测试效果也还算稳定,但是耗时很长。
想要更快地给 SwiftUI 编写单元测试,您可以试试 ViewInspector 开源库,它利用 Swift 开放的反射API 访问 SwiftUI 创建的底层视图。因此,基于 ViewInspector 的测试只需要实例化一个 SwiftUI 视图,定位到需要测试的界面元素,就可以对元素进行断言测试,而像点击这种基本的交互也可以被测试到。如同许多别的 UI 测试框架,ViewInspector 提供了定位界面元素的 API,您可以指定路径,通过视图层级结构找到元素,也可以使用一系列查找方法定位元素。基于 ViewInspector 的测试往往比用 XCUITest 的测试更简单,运行起来也要快得多。不过,需要注意的是,尽管用 ViewInspector 写测试很简单,您也可能因此过度测试——测试简单的一对一映射逻辑就像在复印代码,没有太大意义。此外,即便 ViewInspector 降低了测试 SwiftUI 代码的难度,也请记住要把大部分逻辑放在模型中实现。