在iOS上使用UI自动化测试屏幕跟踪

所以我有这个想法来测试我的应用程序使用UI自动化来实现我的屏幕跟踪(使用Google Analytics(分析)).

最初的想法是建立一个UI脚本来浏览屏幕,同时检查是否相应地发送跟踪事件.我需要这个,因为有时候我无法组合所有的视图控制器,或事件不按预期的顺序转发.无论如何,我也应该测试我的应用程序的这个方面,我认为UI自动化是答案.

我已经使用UI自动化仪器实现了一个脚本来浏览屏幕,并且这个工作正常.我甚至使用tuneup js使代码更加精简,更容易遵循.
我期待有一些东西(一般来说,语法只是一个简化):

Being on screen X
    Tap button A
Expect screen Y and tracking event for the screen Y

但是,只要我能够检查,测试屏幕跟踪是UI自动化不可能的.
还是我错过了什么?

我想到创建一个不可见的视图,保持在所有的视图层次结构之上,并且每次加载新屏幕时都会更改其名称,以便我可以使用UI自动测试,但是这个想法听起来有点超过顶部…

你们建议什么?寻找另一个UI自动化工具?做单位测试吗?

提前感谢任何帮助

解决方法

您可以使用UIAlertView并检查这些警报.不必发送分析事件,您可以弹出警报,以便您可以在UIAutomation中进行检查.

AnalyticsKit这样的分析抽象框架提供了一种改变分析提供者的简单方法.而AnalyticsKit甚至有一个例子(看看AnalyticsKitDebugProvider类).因此,您的生产代码的更改很少.

您可以使用构建配置,您可以在其中设置构建变量来控制分析的初始化

id<AnalyticsKitProvider> provider
#ifdef USE_UI_AUTOMATION_ANALYTICS
provider = [[TestAutomationProvider alloc] init];
#else
provider = [[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 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...