Ios 使用Swift在Xcode中进行异步UI测试
我正在编写一个可以发出大量网络请求的应用程序。像往常一样 异步,即请求方法的调用立即返回结果 延迟后通过委托方法或在闭包中交付。 现在在我的注册屏幕上,我向我的后端发送了一个注册请求,然后 要验证请求完成时是否显示成功UI 等待请求完成的选项有哪些,请验证 成功的用户界面,只有在那之后才离开测试方法 还有比等待请求完成更聪明的选择吗Ios 使用Swift在Xcode中进行异步UI测试,ios,swift,xcode,unit-testing,testing,Ios,Swift,Xcode,Unit Testing,Testing,我正在编写一个可以发出大量网络请求的应用程序。像往常一样 异步,即请求方法的调用立即返回结果 延迟后通过委托方法或在闭包中交付。 现在在我的注册屏幕上,我向我的后端发送了一个注册请求,然后 要验证请求完成时是否显示成功UI 等待请求完成的选项有哪些,请验证 成功的用户界面,只有在那之后才离开测试方法 还有比等待请求完成更聪明的选择吗 提前谢谢 琐碎的方法 苹果在Xcode 9/ios11中进行了重大改进,使您能够等待UI元素的出现。您可以使用以下一个衬里: .waitForExistence(超
提前谢谢 琐碎的方法 苹果在Xcode 9/ios11中进行了重大改进,使您能够等待UI元素的出现。您可以使用以下一个衬里:
.waitForExistence(超时:5)
高级方法
一般来说,UI和单元测试(这里称为测试)必须尽可能快地运行,这样开发人员就可以经常运行它们,而不会因为每天多次运行缓慢的测试套件而感到沮丧。在某些情况下,有可能(内部或安全相关)应用程序访问只能从特定网络/IP范围/主机访问的API。此外,大多数CI服务提供的硬件非常差,互联网连接速度有限
出于所有这些原因,建议以不执行实际网络请求的方式实施测试。相反,它们是用假数据运行的,即所谓的装置。一个聪明的开发人员以一种方式实现了这个测试套件,即可以使用一个简单的开关(比如布尔属性)来切换数据源。此外,当开关设置为获取真实的后端数据时,装置可以从后端自动刷新/记录。通过这种方式,很容易更新假数据并快速检测API的更改
但这种方法的主要优点是速度。您的测试不会发出真正的网络请求,而是针对本地数据运行,这使它们独立于:
- 服务器问题
- 连接速度
- 网络限制