gpt4 book ai didi

ios - 使用登录系统进行 Xcode UI 测试

转载 作者:可可西里 更新时间:2023-11-01 03:31:34 25 4
gpt4 key购买 nike

我有一个带有登录系统的应用程序,所以一旦用户登录该应用程序,我就会将他们的 session 存储在本地数据库中,这样可以防止用户每次使用该应用程序时都必须登录。显然,如果用户尚未登录,应用程序会显示一个 LoginViewController,但如果应用程序检测到用户的当前 session ,则会显示一个 HomeViewController

我为我的 HomeViewController 创建了一些测试,它们都运行良好。但是,我意识到它们工作正常,因为该应用程序当前存储了一个 session 。如果我进入应用程序并注销当前用户,当我运行 UI 测试时,它们将失败。这是有道理的,因为测试期望显示 HomeViewController,而不是显示 LoginViewController

考虑到我还想为 LoginViewController 创建 UI 测试,创建一个解决方案似乎是合理的,在每个测试中,我设置用户是否登录。我该怎么做?

最佳答案

经过一些研究,在 XCUIApplication 启动参数/环境中找到了答案。这允许您在执行测试时发送某些配置,稍后您的主代码可以解释这些配置。

为了让我的案例生效,我放置了以下代码:

// UI Test
func testWelcomeIsShown() {
let app = XCUIApplication()
app.launchArguments.append("isUITestingLogin")
app.launch()
// Rest of your test steps
}

// AppDelegate or wherever you fetch your current session
func getCurrentSession() {
if NSProcessInfo.processInfo().arguments.contains("isUITestingLogin") {
session = nil
} else {
session = DatabaseManager.getSession()
}
}

注意:此代码将用于记录和执行您的测试。但是,如果您确实有多个具有相同逻辑的测试,您可能会将 testWelcomeIsShown() 的前 3 行移动到测试类的 setUp() 中。但是,请务必记住,在录制测试时不会执行此设置,因此您需要手动设置一个无当前 session 环境。

关于ios - 使用登录系统进行 Xcode UI 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38332982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com