我刚接触测试,并且非常努力测试我们的UI逻辑。特别是 - 测试事件应该在由UIScrollView的contentOffset更改触发时触发。
我面临的主要问题是,XCUI似乎只允许我验证UI更改,但我尝试测试的级联事件的结果不会执行任何UI更改 - 结果很简单在后台进行http调用。 这可以测试吗?
(如果需要,这里是我的用例的详细解释:)
当应用启动时,表格视图中会填充20个或更多单元格。当用户滚动时,存在用于检测每个单元何时50%可见或更大的代码。当一个单元格在tableview中第一次变为50%或更多时,可以进行http调用。 (这是我试图测试但没有找到方法)
答案 0 :(得分:3)
正在进行网络请求的非面向用户行为必须通过单元测试进行测试,而不是UI测试,因为UI测试无权访问除UI以外的任何内容,并且它只是表示什么是在屏幕上(XCUIElements),而不是您应用程序中的实际UIView对象。
然而,这里的权衡是单元测试不会在非常高的水平上进行测试,并且应该只测试非常小的项目范围,并且需要大量的模拟/存根。
我的建议是使用单元和UI测试的组合。使用单元测试来检查网络调用是否在正确的位置进行,并使用UI测试来测试应用程序是否启动以及单元格在滚动时显示正确的内容。对于UI测试,您可以存储来自服务器的响应,以确保始终使用OHHTTPStubs等存根框架获取有效数据。这两种类型的测试一起能够测试你想要的东西。