Xcode UI 测试 - 使用存储的凭据登录/注销

2024-04-12

我想在我的 iOS 应用程序 (Xcode 7.2.1) 中运行登录过程的功能 (UI) 测试。

该应用程序的行为是,成功登录后,将存储用户凭据,以便在下次启动时自动登录(不显示登录屏幕)。

因此,我在登录屏幕中设置了一系列 UI 事件,以使应用程序首次在 iOS 模拟器中启动时登录测试通过。 但是,下次运行测试时将会失败,因为登录屏幕甚至没有按预期显示。

我在这里看到两个选项,但似乎都不合适:

  1. 每次运行测试之前,使用脚本重置 iOS 模拟器的内容和设置。我尝试添加一个Run Script测试目标的阶段Build Phases with: xcrun simctl shutdown booted && xcrun simctl erase all && killall "Simulator",并且它似乎不起作用(模拟器应用程序无法启动并且测试陷入困境)。
  2. 包括在-(void)tearDown一些代码来清除存储的用户凭据。这个选项也不好,因为它不仅在每个测试方法之间运行(不是每个测试启动),而且似乎我无权访问AuthManager我用来清除用户凭据的类。

当进行这样的 UI 测试登录过程时,您会做什么?


我遇到过同样类型的问题。经过一番抨击后,我最好的方法是尝试让事情变得更简单。在我的眼泪中,我总是“放松”我可能做过的任何事情。有时这有点矫枉过正,但仍然是很好的做法。我在放松时发现了许多错误,如果我进行某种硬重置,我可能会忽略它们。 IE:我将导航回主页(我的起点),如果我已登录,那么我只需注销即可。根据记录,在应用程序端,当用户注销时,他们的凭据将被删除。

例如,在我的 SignInTests.swift 类上,我将所有方法放在同一类文件的扩展中。这样我就可以简单地调用 SignInTests().signIn() 或 SignInTests().signOut() ,以便我可以从我可能调用的任何其他测试类访问它们。

这是我的场景,非常适合我。可能不是您的最佳选择,但我希望它能为您指明正确的方向。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xcode UI 测试 - 使用存储的凭据登录/注销 的相关文章

随机推荐

  • 如何删除 HTML 正文中签名上方自动生成的行?

    When I Display邮件 要添加签名 签名上方添加两行空行 有没有办法删除它们 使邮件看起来更好 而不丢失签名格式 With objOutlookMsg SentOnBehalfOfName email protected cdn
  • getResource 使用 java 1.7 windows 7 在磁盘名称之前放置一个前导 /

    以下在磁盘名称之前给出了一个前导斜杠 我怎样才能避免这种情况 String pngpath getClass getResource resources image png getPath System out println pngpat
  • Restcomm gmlc 配置问题 主要地址不存在本地 SSN

    我在尝试在 Windows Server 2008 R2 上配置 Restcomm gmlc 时遇到问题 我收到这条消息 下图是HLR和Windows服务器的设置 以下是设置 GmlcManagement gmlcproperties xm
  • 如何用 Cocoa 获得准确的分贝值?

    我们正在创建一个应用程序 它可以记录周围的声音 并在声音超过指定分贝时采取必要的措施 为了实现应用程序目标 我们使用 AudioQueueObject h 中的以下方法 void getAudioLevels Float32 levels
  • innerHTML 将 CDATA 转换为注释

    我正在尝试使用 javascript 将一些 HTML 插入到页面中 并且我插入的 HTML 包含 CDATA 块 我发现 在 Firefox 和 Chrome 中 CDATA 正在转换为注释 HTML 不在我的控制之下 所以我很难避免使用
  • 在不知道编码的情况下如何读取编码头?

    如果我正在读取 HTML 文件的 XML 我是否必须读取告诉我编码的标签才能读取该文件 该标签的编码方式与文件的编码方式不一样吗 我很好奇你如何在不知道编码的情况下读取该标签 我意识到这个问题已经解决了 我只是好奇它是如何完成的 Updat
  • 在计算机上找不到 MySQL

    我最近直接从网站 mysql 5 7 9 osx10 10 x86 64 dmg 安装了MySQL 并且在尝试更改给定密码时遇到了很大的困难 返回的错误是 警告 在命令行界面上使用密码可能会导致 没有安全感 mysqladmin 连接到 l
  • Java:从 FTP 服务器访问文件

    我有一个 FTP 服务器 里面有一堆文件夹和文件 我的程序需要访问该服务器 读取所有文件并显示它们的数据 出于开发目的 我一直在使用硬盘驱动器上 src 文件夹中的文件 但现在服务器已启动并运行 我需要将软件连接到它 基本上我想要做的是获取
  • 是否可以获取 Stream 中的下一个元素?

    我正在尝试转换for loop到功能代码 我需要向前看一个值 也需要向后看一个值 是否可以使用流 以下代码是将罗马文本转换为数值 不确定带有两个 三个参数的reduce方法是否可以在这里提供帮助 int previousCharValue
  • 在 Windows 环境中使用 Gnustep 在 Objective-C 中进行编程

    我正在使用 Windows 并且想开始学习如何使用 Objective C 进行编程 我安装了 Gnustep 但无法确定如何构造和构建项目 等效 也找不到 IDE 请参阅Gnustep 入门 https stackoverflow com
  • 选择com的理由

    我想知道为什么人们会选择 Com 作为他的软件开发 技术 我的第一个想法是机器 编程语言的独立性 你的是啥呢 COM 是 Windows 上自动化和 IPC 的事实上的标准 尽管 Net 已经开始转移焦点 因此有些领域您根本没有 或没有 选
  • 在python中查找关键字后的单词[重复]

    这个问题在这里已经有答案了 我想查找出现在关键字 由我指定和搜索 之后的单词并打印出结果 我知道我应该使用正则表达式来做到这一点 我也尝试了一下 如下所示 import re s hi my name is ryan and i am ne
  • 如何从 Django 中的请求对象获取 URI?

    如何从 Django 中的请求对象获取 URI 有 request uri 吗 request META REQUEST URI or request get full path 你往往会产生大量琐碎的问题 你可以在文档 谷歌中轻松找到答案
  • NSTokenField 捕获一些 NSEvents

    我需要为 NSTokenField 和解决方案实现 Command Enter Command O 和 Esc 快捷键https stackoverflow com a 18486965 1067147 https stackoverflo
  • 如何使用 Javascript 访问网络摄像头 [重复]

    这个问题在这里已经有答案了 我用谷歌搜索了很长一段时间关于这个话题 没有任何令人满意的结果 实际上我的基本问题是 有没有可能使用 Javascript 访问网络摄像头 也许用 HTML5
  • jQuery .val() 与 .attr("value")

    我本来以为这两个是一样的 但看起来不是 我一般都用过 obj attr value 使用表单字段 但在我当前正在构建的页面上 obj attr value 不返回我在字段中输入的文本 然而 obj val does 在我构建的另一个页面上
  • 自定义验证错误的自动响应

    在 asp net core 2 1 中 当发生验证错误时 ApiController 将自动响应 400 BadRequest 如何更改 修改发送回客户端的响应 json body 有某种中间件吗 我正在使用 FluentValidati
  • 使用 Celery(RabbitMQ、Django)检索队列长度

    我在 django 项目中使用 Celery 我的代理是 RabbitMQ 我想检索队列的长度 我浏览了 Celery 的代码 但没有找到执行此操作的工具 我在 stackoverflow 上发现了这个问题 从客户端检查 RabbitMQ
  • 在 go 中使用来自网络的原始字节

    抱歉 问题很长 我最近一直在尝试使用 Go 而不是 C 来开发一个游戏服务器模拟器 我正在将其作为一个业余项目进行开发 并质疑我是否以合理的 Go 术语来实现它 正如您所料 服务器通过发送符合特定协议规范的原始数据包 TCP 与一个或多个游
  • Xcode UI 测试 - 使用存储的凭据登录/注销

    我想在我的 iOS 应用程序 Xcode 7 2 1 中运行登录过程的功能 UI 测试 该应用程序的行为是 成功登录后 将存储用户凭据 以便在下次启动时自动登录 不显示登录屏幕 因此 我在登录屏幕中设置了一系列 UI 事件 以使应用程序首次