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

前端之家收集整理的这篇文章主要介绍了ios – Xcode UI测试 – 使用存储的凭据登录/注销前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在我的iOS应用程序( Xcode 7.2.1)中运行登录过程的功能(UI)测试.

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

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

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

>在每次测试运行之前,使用脚本重置iOS模拟器的内容和设置.我尝试在测试目标的Build Phases中添加一个Run Script阶段:xcrun simctl shutdown booted&& xcrun simctl擦除所有&& killall“模拟器”,它似乎不起作用(模拟器应用程序不启动和测试卡住).
>包括 – (void)tearDown一些代码来清除存储的用户凭据.这个选项不好,因为它不仅在每个测试方法之间运行(不是每次测试启动),而且似乎我无法访问用于清除用户凭据的AuthManager类.

在UI测试这样的登录程序时你会怎么做?

解决方法

我遇到过相同类型的问题.经过一番抨击我最好的方法是尝试让事情变得更简单.在我的撕裂中,我总是“放松”我可能做过的任何事情.有时它太过分了,但它仍然是很好的做法.如果我做了某种硬重置,我在放松的时候发现了许多错误,我可能会忽略它们. IE:我将导航回主页(我的起点),如果我已登录,那么我只需退出即可.为了记录,当用户注销时,在应用程序端,他们的凭据被剥离.

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

这是我的场景,对我来说非常合适.可能不是你的最佳选择,但我希望它指出你正确的方向.

猜你在找的Xcode相关文章