2012-05-15 125 views
8

我有一個iOS應用程序,我想把它放在持續集成中。我正在使用的策略是嘗試從命令行運行測試。不能從命令行運行UIAutomationTest

我嘗試使用下面的腳本來做到這一點:

TRACETEMPLATE="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate" 
instruments -t $TRACETEMPLATE build/Release-iphonesimulator/MyApp.app -e UIACSCRIPT "UnitTests/SomeTest.js" 

SomeTest.js是,我可以在裏面的Xcode儀器運行一個簡單的JavaScript文件和它的作品。我建立我的應用程序使用:

xcodebuild -alltargets -sdk iphonesimulator5.1 

並且這會生成MyApp.app。不過,我可以運行在Xcode在模擬器中的應用程序就好了,當我試圖通過儀器運行,我得到一個盒子說,有一個未知的錯誤,並在命令行它打印:

2012-05-15 15:32:59.928 instruments[17548:1d03] Recording cancelled : At least one target failed to launch; aborting run 
Instruments Trace Error : Failed to start trace. 

任何人都可以給我任何關於可能發生的事情的幫助/建議,我該如何解決這個問題?

另外,它總是打開iPad模擬器?我可以讓它打開我想要的任何模擬器嗎?

+0

我有完全一樣的問題,也解決不了它:( – Roger

+0

我無法找到一個解決方案爲止。我會試着問對蘋果自己的論壇,看看他們是否拿出一些東西。如果我發現出來的東西,我會讓你知道的 – Rafael

回答

6

我得到這個相同的錯誤,幾乎拉我的頭髮試圖解決它。錯誤消息完全沒有幫助。

最終導致問題的是我指向的.app文件。一旦我找到深埋在5.1 Simulator文件夾中的「right」.app文件,我終於能夠通過命令行使用Xcode 4.3運行UIAutomation測試。

來爲我工作了。應用程序的路徑:

~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/{string-of-numbers-and-letters}/MyApp.app/ 

下面是完整的命令我使用和Xcode 4.3運行在命令行UIAutomation測試:

instruments -t /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate ~/Library/Application\ Support/iPhone\ Simulator/5.1/Applications/{string-of-numbers-and-letters}/MyApp.app/ -e UIASCRIPT /Path/To/TestFile.js 

希望這可以幫助別人,因爲這裏的文檔非常缺乏。

更新

注意,作爲Xcode的4.5.2,自動化模板位置已經從改變了我原來的答覆:

/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate 
+0

謝謝,它的工作!我不知道我是否可以把它放在一個ci服務器,雖然(不要以爲我的Makefile會更新應用程序,我會測試以及看它是否工程....) – Rafael

+0

嘿@ spotdog13,當我運行它,我得到這個錯誤 - '失敗:目標應用程序似乎已經死亡 儀器跟蹤Complete' – Legolas

+1

@Legolas,這聽起來好像版本你指定的.app不是最新版本的應用程序你確定在〜/ Library/Application \ Support/iPhone \ Simulator/5.1/Applications/{string中沒有多個文件夾數字和字母}?如果參考上述路徑中有多個「{字符串和數字和字母}」文件夾,請嘗試另一個文件夾並查看它是否有效。我的猜測是你正在嘗試運行一箇舊版本的應用程序。讓我知道這是否有幫助。 – DiscDev

0

對不起,我的英語很糟糕。 作爲從Teamtsity運行此腳本的最簡單方法?每個程序集 - 數字和字母都是不同的。 不是最簡單的方法:

  1. 乾淨模擬器裝配前
  2. 找到該程序的文件夾,它包含這些數字和字母,寫在變量。
  3. 這個變量,比如寫腳本。

也許有一種方法更容易從這些數字中獲取?

1

在過去幾年裏,UIAutomation的命令行調用路徑略有改變。我已經編寫了幾個可以一起工作的bash shell腳本,它們可以以與Xcode 4.4.1兼容的方式啓動UIAutomation測試文件。

看到這個要點:https://gist.github.com/3605692#comments

簡而言之,關鍵命令結束是:

instruments -t $INSTRUMENTS_TEMPLATE $APP_PATH -e UIASCRIPT $SCRIPT_PATH -e UIARESULTSPATH $RESULTS_PATH

我的腳本顯示所需的變量替換。另一個好處是iOS模擬器應用程序經常將GUID作爲其路徑的一部分進行更改。我的腳本會找到它們,因此您不必在build/scripts /命令行調用中對臨時GUID進行硬編碼。

+1

謝謝你的shell腳本! – kovpas

6

的Automation.tracetemplate的正確位置,爲的Xcode 4.5.2的,是/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate

+0

我希望我能給你10票。他們爲什麼不斷改變它? –

0

構建配置應該是調試比釋放。這是我的錯誤原因。 您可以在'Edit Schemes'中更改Build Configuration並選擇Profile選項卡。驗證生成選項卡也處於調試模式。

0

我做了ps命令來查看哪些進程正在運行。我發現樂器還在運行。然後,我做了killall instruments,並導致儀器過程中斷。然後,我做了我的樂器指令,並在此之後完美奏效。

相關問題