【发布时间】:2017-11-16 10:23:26
【问题描述】:
通常在 iOS 单元测试中,我们创建新对象,调用我们想要测试的方法,然后验证结果。这是一个独立的过程。测试用例总是从应用实例开始运行,但我们不直接访问该实例。
但是,使用 KIF 或 EarlGrey 等框架,我们可以通过在运行的应用实例中访问带有可访问性标签的 UI 元素来编写功能测试。我想知道它是如何实现的。当测试开始时,我们没有上下文或根视图控制器对象之类的东西,框架如何从“无处”找到呈现视图控制器?
【问题讨论】:
通常在 iOS 单元测试中,我们创建新对象,调用我们想要测试的方法,然后验证结果。这是一个独立的过程。测试用例总是从应用实例开始运行,但我们不直接访问该实例。
但是,使用 KIF 或 EarlGrey 等框架,我们可以通过在运行的应用实例中访问带有可访问性标签的 UI 元素来编写功能测试。我想知道它是如何实现的。当测试开始时,我们没有上下文或根视图控制器对象之类的东西,框架如何从“无处”找到呈现视图控制器?
【问题讨论】:
因为它们基于 XCTest 的单元测试范式。在其中,测试和应用都在同一个包中,因此可以访问应用内部。
使用[UIApplication sharedApplication],您实际上可以获得应用程序的 UIWindow 并找到整个 View Hierarchy。
【讨论】: