使用 URL 启动选项启动 XCode UI 测试

问题描述 投票:0回答:2

我想为我的 iOS 应用程序编写一个测试,以验证从自定义注册 URL 方案启动应用程序时显示正确的屏幕内容。

例如,用户收到一封包含指向

myapp://action1/1234
链接的电子邮件。当他们点击此链接时,我的应用程序将启动并且屏幕显示“1234”。

didFinishLaunchingWithOptions
中,我的 AppDelegate 检查
launchOptions?[UIApplicationLaunchOptionsURLKey]
是否存在并采取适当的操作。

如何编写 UI 测试,以便应用程序启动时应用程序 launchOptions 字典包含预期的 URL?

ios xcode swift xcode-ui-testing
2个回答
1
投票

您可以通过利用

launchEnvironment
上的
XCUIApplication
并结合目标应用程序中的几行自定义代码来完成此工作。基本上,您会为此测试设置一个自定义启动环境变量,在您的应用程序中,您将检查该变量并以与处理您期望的特定
UIApplicationLaunchOptionsURLKey
的存在相同的方式处理它。

在您的应用程序中,您可以通过

NSProcessInfo.processInfo.environment
检查该值,它返回环境变量的字典。

(请注意,Xcode 7 中的默认 XCTestCase 模板包含对

XCUIApplication -launch
中的
setup
的调用,这将终止任何先前运行的实例,并默认启动一个新实例。)

编辑:想补充一下,我在 Xcode 7 UI 测试技巧的文章中写了更多相关内容,以防有帮助。


0
投票

您应该能够使用这些相对较新的 API 来实现此目的:

这将允许您使用系统默认打开一个 URL: https://developer.apple.com/documentation/xctest/xcuisystem/4108234-open

这将使用特定的应用程序: https://developer.apple.com/documentation/xctest/xcuiapplication/4108226-open

© www.soinside.com 2019 - 2024. All rights reserved.