2011-01-24 79 views
5

我在谷歌搜索了很多,以找到解决我的问题与UI自动化。相反,我发现张贴很好的总结他们:我该如何改进iPhone UI Automation?

有没有办法运行命令行测试(...)

有没有办法来设置或重置状态。 (...)

上一个问题的一部分是UI自动化没有离散测试的概念。 (...)

没有办法以编程方式检索测试运行的结果。 (...)

源:http://pivotallabs.com/users/amilligan/blog/articles/1323-iphone-ui-automation-tests-a-decent-start

问题没有。 3可以用茉莉花解决(https://github.com/pivotal/jasmine-iphone)

其他问题怎么样?自该职位(2010年7月20日)以来,是否有任何改进?

还有一个问题是,只有一种现有的选择特定UI元素的方法是在应用程序源代码中添加可访问性标签?

回答

5

虽然UI自动化自从发布后已经有所改进,但我所看到的改进都与可靠性有关,而不是新功能。

他提出了有关使用UI Automation进行更严重测试的一些问题的好处。如果您稍后阅读评论,则有关于解决这些问题的方法的大量讨论。

从命令行运行测试的主题在this question中讨论,其中潜在的解决方案暗示为in the Apple Developer Forums。我没有尝试过这个。

您可以在测试结果运行后导出测试结果,您可以离线分析测试结果。

最后,关于您的最后一个问题,您可以处理UI元素,而无需为其分配可访问性标签。许多常见的UIKit控件默认都是可访问的,因此您可以通过名称来定位它们。否则,你可以挑选出他们的位置视图显示层次结构,就像下面的例子:

var tableView = mainWindow.tableViews()[0]; 

往常一样,如果有什么东西从UI自动化工具,重要的是你缺少的,file an enhancement request使其可能会进入下一版本的SDK。

+0

非常感谢您的详细解答。我会阅读你后面提到的页面,但是快速浏览后,我认为他们可以帮助我。关于“严重测试” - 这是我的情况,因为我要将这个过程与我的CI服务器集成在一起。 – 2011-01-25 09:44:23

+1

对不起,但将仪器集成到CI中会让人痛苦。目前,我正在使用Sikuli(sikuli.org)来解决您指出的问题,但我仍然不会将其放在CI中。对于CI我会使用这种方法http://cocoawithlove.com/2009/12/sample-iphone-application-with-complete.html – yoosiba 2011-03-16 21:26:43

+0

yoosiba:你真的更喜欢使用像Sikuli一般的方法?如何比较为UIAutomation和Sikuli编写标准的gui测试用例时的工作量? – 2011-04-12 09:38:21

0

尝试检查元素层次结构,可以将表放置在UIScrollView上。

var tableV = mainWindowTarget.scrollViews()[0].tableViews()[0].scrollToElementWithName("Name of element inside the cell"); 

上面的脚本会更加的元素是在12日的细胞(但名称应该是完全一样的细胞内提到的)

3

您是否尝试过IMAT? https://code.intuit.com/sf/sfmain/do/viewProject/projects.ginsu。它使用Apple提供的原生javascript sdk,并且可以通过命令行或乐器触发。

在回答你的每一个问题:

有没有办法运行命令行测试(...)

苹果现在提供这个。使用IMAT,您可以通过命令行或仪器启动测试。在Apple提供命令行界面之前,我们使用AppleScript来启动Instruments,然后开始测试 - 令人讨厌。

无法设置或重置状态。 (...)

退房这个状态图:https://code.intuit.com/sf/wiki/do/viewPage/projects.ginsu/wiki/RecoveringFromTestFailures以前的问题

部分原因是UI自动化已经没有独立的测试概念。 (...)

同意。 IMAT和tuneup.js(https://github.com/alexvollmer/tuneup_js#readme)都允许这样做。

没有办法以编程方式检索测试运行的结果。 (...)

读取尾随plist文件不是微不足道的。 IMAT在测试运行后通过阅读plist文件提供了一个类似jUnit的报告,这是由我的工具(Teamcity,Jenkins,CruiseControl)提取的