为什么 XCode 两次启动应用程序来运行 UI 测试?

Alp*_*per 4 xcode ios xcode-ui-testing

我正在经历一个相当乏味的过程,让一堆 UI 测试再次工作,但要运行每个测试,看起来 XCode 在模拟器中启动了两次应用程序。一次是一无所获,然后是另一次真正运行测试的地方。

我的配置是否有问题导致这种情况发生,或者这种行为是否符合预期?

joe*_*ern 6

这是预期的行为。您所看到的实际上不是启动两次的同一个应用程序,而是两个不同的应用程序:

第一次启动是UITestRunner应用程序。启动 UITest 时,Xcode 会构建一个 UITestRunner 应用程序,该应用程序与您的应用程序进行交互。需要此运行器应用程序,因为 UITest 的工作方式与单元测试不同。

单元测试在您的应用程序范围内工作。换句话说,他们可以访问您应用的所有代码、变量和状态。因此,在运行单元测试时,只会启动您的应用程序。

UITests像用户一样“使用”你的应用。他们无权访问您的应用程序代码。他们所能做的就是使用用户界面与应用程序进行交互。UITests 在与您的应用程序不同的进程中运行。这就是 UITestRunnerApp 的作用。它综合了您的应用可以响应的事件。换句话说: UITestRunnerApp 模拟真实用户。

因此,当启动 UITest 时,您确实会看到两个应用程序正在启动。首先是 UITestRunner 应用程序(将立即发送到后台),然后是您的应用程序。