2011-01-24 81 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)提取的