加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 19:44:21 所属栏目:百科 来源:网络整理
导读:我有一个带登录系统的应用程序,所以一旦用户登录了应用程序,我将他们的会话存储在本地数据库中,这会阻止用户每次使用该应用程序时都登录.显然,如果用户尚未登录,则应用程序会显示LoginViewController,但如果应用程序检测到用户的当前会话,则会显示HomeViewCo
我有一个带登录系统的应用程序,所以一旦用户登录了应用程序,我将他们的会话存储在本地数据库中,这会阻止用户每次使用该应用程序时都登录.显然,如果用户尚未登录,则应用程序会显示LoginViewController,但如果应用程序检测到用户的当前会话,则会显示HomeViewController.

我已经为我的HomeViewController创建了一些测试,它们都运行良好.但是,我已经意识到它们工作正常,因为应用程序当前存储了会话.如果我进入应用程序并注销当前用户,当我运行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().但是,请务必记住,在记录测试时不会执行此设置,因此您需要手动设置无当前会话环境.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读