KIF 或 EarlGrey 等框架如何访问 运行 应用程序?

How does framework like KIF or EarlGrey access the running application?

通常在 iOS 单元测试中,我们创建新对象,调用我们想要测试的方法,然后验证结果。这是一个独立的过程。测试用例总是启动 运行 应用程序实例,但我们不直接访问该实例。

但是,使用 KIF 或 EarlGrey 等框架,我们可以通过访问 运行 应用程序实例中带有可访问性标签的 UI 元素来编写功能测试。我想知道它是如何实现的。测试开始时我们没有上下文或根视图控制器对象,框架如何从 "nowhere" 找到呈现视图控制器?

因为它们基于 XCTest 的单元测试范式。在其中,测试和应用都在同一个包中,因此可以访问应用内部。

使用 [UIApplication sharedApplication],您实际上可以获得应用程序的 UIWindow 并找到整个视图层次结构。