在过去的几天里,我一直在玩Apple的UIAutomation框架,试图整理一套验收测试来推动我正在开发的应用程序(以BDD类型的方式... )。
我遇到的一件事是如何让SUT进入一个给定的状态,这样我就可以开始我的测试了,如果我需要设置一些内部状态来实现。问题是Apple的Javascript环境没有提供任何我可以用来与设备通信的功能,而不是通过它的UI(我敢肯定这可能是设计但有时这是不切实际的):尽管像{{3这样的解决方案或} iCuke可以使用HTTP与嵌入在目标应用程序中的侦听服务器进行通信,以便进行此类通信,在仪器的UIAutomation环境中无法执行此类操作。
看看提供的API,我注意到UIAApplication类上有一个函数允许我在目标设备上设置一个首选项值(Frank):我想到我可以安装一些代码可以使用KVO监视给定优先键的机会的设备,然后我可以将其用作与目标应用程序中某些特定测试特定帮助程序代码进行通信的方法(在优先级的值更改时作出反应) )。
我开始玩,看看我是否可以完成这项工作,但是碰到了一堵砖墙,因为我无法找到一种方法来访问目标应用程序中UIAutomation设置的首选项。问题是首选项似乎是在主机域级别设置的(即它们是在文件/Library/Preferences/com.mycompany.MyApp
中设置的)而不是在我的应用程序特定的沙盒/Library
文件夹中设置。
我确定我设置的首选项正在访问设备 - 我可以看到上述文件中的值发生了变化,但我找不到使用NSUserDefaults访问这些值的方法。
任何人都可以了解我应该如何在iOS设备上访问存储在此级别(NSLocalDomain ...)的首选项?
NB:我意识到这完全是黑客攻击,但不幸的是,Apple现在提供的环境似乎远远落后于标记,所以我正尽力填补空白来代替Apple的进一步更新。如果你在网上搜索,你会发现see here for more details有过非常相似的经历,并试图以类似的方式解决当前的缺陷。
更新:根据other people,这可能是一个错误。虽然我无法确认这一点。
答案 0 :(得分:0)
我也有here的类似问题。
我使用自动测试来运行我的应用程序的方式只是在实际的iOS设备中运行它(iPhone具体)。但是,我还发现UIA脚本中的deactivate等功能在真实设备上不起作用。由于某种原因,自动化无法找到应用程序按钮并重新输入应用程序。
希望这有帮助!