最初的想法是建立一个UI脚本来浏览屏幕,同时检查是否相应地发送跟踪事件.我需要这个,因为有时候我无法组合所有的视图控制器,或事件不按预期的顺序转发.无论如何,我也应该测试我的应用程序的这个方面,我认为UI自动化是答案.
我已经使用UI自动化仪器实现了一个脚本来浏览屏幕,并且这个工作正常.我甚至使用tuneup js使代码更加精简,更容易遵循.
我期待有一些东西(一般来说,语法只是一个简化):
Being on screen X Tap button AExpect screen Y and tracking event for the screen Y
但是,只要我能够检查,测试屏幕跟踪是UI自动化不可能的.
还是我错过了什么?
我想到创建一个不可见的视图,保持在所有的视图层次结构之上,并且每次加载新屏幕时都会更改其名称,以便我可以使用UI自动测试,但是这个想法听起来有点超过顶部…
你们建议什么?寻找另一个UI自动化工具?做单位测试吗?
提前感谢任何帮助
解决方法 您可以使用UIAlertVIEw并检查这些警报.不必发送分析事件,您可以d出警报,以便您可以在UIautomation中进行检查.像AnalyticsKit这样的分析抽象框架提供了一种改变分析提供者的简单方法.而AnalyticsKit甚至有一个例子(看看AnalyticsKitDeBUGProvIDer类).因此,您的生产代码的更改很少.
您可以使用构建配置,您可以在其中设置构建变量来控制分析的初始化
ID<AnalyticsKitProvIDer> provIDer#ifdef USE_UI_autoMATION_ANALYTICSprovIDer = [[TestautomationProvIDer alloc] init];#elseprovIDer = [[RealProvIDer alloc] initWithAPIKey:API_KEY];#endif[AnalyticsKit initializeLoggers:@[provIDer]];
在UIautomation中,您可以测试警报.您可以使用tuneup.Js包中的assertions.Js来编写一个这样的函数
function checkForAlert(){ var alert = null; retry( function() { log("wait until alert appaers"); alert = UIATarget.localTarget().frontMostApp().alert(); assertNotNull(alert,"No alert found"); assertTrue("The name you can choose for the alert" == alert.name()); },5,1.0); return alert;};
这结合了等待警报和测试,如果它终于出现.如果不出现警报,测试将失败.
在您的测试中,您可以使用以下方式:
var analyticAlert = checkForAlert() // if alert appears it will be in the var,otherwise the test fails at this point.analyticAlert.buttons()["OK"].tap(); // dismiss the alert
为了使此工作,您还需要设置一个onAlert处理程序.否则,UIautomation会尝试立即关闭警报.这必须在您的测试代码之前完成.警报处理在UIautomation文档中解释.
function MyOnAlertHandler(alert){ if("The name you choose"==alert.name()) // filter all alerts created by analytics provIDer { return true; // handle alert in your test } return false // automaticly dismiss all other }UIATarget.onAlert = MyOnAlertHandler; // set the alert handler总结
以上是内存溢出为你收集整理的在iOS上使用UI自动化测试屏幕跟踪全部内容,希望文章能够帮你解决在iOS上使用UI自动化测试屏幕跟踪所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)