我想在我的 iOS 应用程序 (Xcode 7.2.1) 中运行登录过程的功能 (UI) 测试。
该应用程序的行为是,成功登录后,将存储用户凭据,以便在下次启动时自动登录(不显示登录屏幕)。
因此,我在登录屏幕中设置了一系列 UI 事件,以使应用程序首次在 iOS 模拟器中启动时登录测试通过。
但是,下次运行测试时将会失败,因为登录屏幕甚至没有按预期显示。
我在这里看到两个选项,但似乎都不合适:
- 每次运行测试之前,使用脚本重置 iOS 模拟器的内容和设置。我尝试添加一个
Run Script
测试目标的阶段Build Phases
with: xcrun simctl shutdown booted && xcrun simctl erase all && killall "Simulator"
,并且它似乎不起作用(模拟器应用程序无法启动并且测试陷入困境)。
- 包括在
-(void)tearDown
一些代码来清除存储的用户凭据。这个选项也不好,因为它不仅在每个测试方法之间运行(不是每个测试启动),而且似乎我无权访问AuthManager
我用来清除用户凭据的类。
当进行这样的 UI 测试登录过程时,您会做什么?
我遇到过同样类型的问题。经过一番抨击后,我最好的方法是尝试让事情变得更简单。在我的眼泪中,我总是“放松”我可能做过的任何事情。有时这有点矫枉过正,但仍然是很好的做法。我在放松时发现了许多错误,如果我进行某种硬重置,我可能会忽略它们。 IE:我将导航回主页(我的起点),如果我已登录,那么我只需注销即可。根据记录,在应用程序端,当用户注销时,他们的凭据将被删除。
例如,在我的 SignInTests.swift 类上,我将所有方法放在同一类文件的扩展中。这样我就可以简单地调用 SignInTests().signIn() 或 SignInTests().signOut() ,以便我可以从我可能调用的任何其他测试类访问它们。
这是我的场景,非常适合我。可能不是您的最佳选择,但我希望它能为您指明正确的方向。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)