我想为我的 iOS 应用程序编写一个测试,以验证从自定义注册 URL 方案启动应用程序时显示正确的屏幕内容。
例如,用户收到一封包含指向
myapp://action1/1234
链接的电子邮件。当他们点击此链接时,我的应用程序将启动并且屏幕显示“1234”。
在
didFinishLaunchingWithOptions
中,我的 AppDelegate 检查 launchOptions?[UIApplicationLaunchOptionsURLKey]
是否存在并采取适当的操作。
如何编写 UI 测试,以便应用程序启动时应用程序 launchOptions 字典包含预期的 URL?
您可以通过利用
launchEnvironment
上的 XCUIApplication
并结合目标应用程序中的几行自定义代码来完成此工作。基本上,您会为此测试设置一个自定义启动环境变量,在您的应用程序中,您将检查该变量并以与处理您期望的特定UIApplicationLaunchOptionsURLKey
的存在相同的方式处理它。
在您的应用程序中,您可以通过
NSProcessInfo.processInfo.environment
检查该值,它返回环境变量的字典。
(请注意,Xcode 7 中的默认 XCTestCase 模板包含对
XCUIApplication -launch
中的 setup
的调用,这将终止任何先前运行的实例,并默认启动一个新实例。)
编辑:想补充一下,我在 Xcode 7 UI 测试技巧的文章中写了更多相关内容,以防有帮助。
您应该能够使用这些相对较新的 API 来实现此目的:
这将允许您使用系统默认打开一个 URL: https://developer.apple.com/documentation/xctest/xcuisystem/4108234-open
这将使用特定的应用程序: https://developer.apple.com/documentation/xctest/xcuiapplication/4108226-open